(この記事は IoTLT の Advent Calendar 2025 の記事【2つ目】にする予定です)
はじめに
この記事は、以下で試した「BOCCO emo の SDK(Node.js版)」に関する内容です。
●BOCCO emo の SDK(Node.js版)で API を使った簡単な発話を試す - Qiita
https://qiita.com/youtoy/items/7833bb1fd2e83e1100a4
上記の記事では、テキストメッセージの送信を試しましたが、今回は「音声メッセージ送信」を試してみます。
さっそく試す
さっそく SDK を使ったお試しをやってみます。
SDK を使わない場合は、以下のドキュメントの記載に従って POSTリクエストを扱うコードを用意すれば良いようです。
●APIドキュメント | BOCCO emo Platform API
https://platform-api.bocco.me/dashboard/api-docs#post-/v1/rooms/-room_uuid-/messages/audio
SDK を使う場合
SDK を使う場合の話です。
サンプルコード・その下に書かれた記載(以下に画像で示したもの)を見ると、docsフォルダ内のドキュメントを見る必要がありそうでした。
●@ux-xu/emo-platform-api-nodejs - npm
https://www.npmjs.com/package/@ux-xu/emo-platform-api-nodejs
GitHubリポジトリからファイルを取得し、ドキュメントの中の記載を見てみます。「音声メッセージ送信」に関する SDK の関連する処理は、以下になりそうです。
「EmoApiClient」の「postAudioMessage()」を使えば良さそうです。そして、引数には以下を指定するようです。
部屋の ID は、過去のお試しで取得・利用していたもので良さそうです。あとは「PostAudioMessageRequest」について、ドキュメントの記載を見てみます。
該当箇所を見ると、以下のように書かれています。
以下にも書かれた、「{ audio: Buffer }」のオブジェクトを渡せば良さそうです。
●emo-platform-api-nodejs/src/types.ts at c5dd2ad2efc010386f80624f0a8f663fe6eea52c · YUKAI/emo-platform-api-nodejs
https://github.com/YUKAI/emo-platform-api-nodejs/blob/c5dd2ad2efc010386f80624f0a8f663fe6eea52c/src/types.ts#L171
下準備とコード・実行結果
下準備
今回のお試し用コードを動かすための下準備をします。
まず、以下でパッケージをインストールします。
npm install @ux-xu/emo-platform-api-nodejs
さらに、トークンや ID をセットします。今回は、以下の名前で環境変数として設定しました。
- アクセストークン: EMO_ACCESS_TOKEN
- リフレッシュトークン: EMO_REFRESH_TOKEN
- 部屋の ID: EMO_ROOM_UUID
それと、BOCCO emo に送る音声ファイルを準備します。声のファイルにしようかと思っていたのですが、ふと効果音を試してみようと思いました。
具体的には、以下の効果音ラボさんの「ドラムロール」の効果音です。
●演出・アニメ[1]|効果音ラボ
https://soundeffect-lab.info/sound/anime/
「ドラムロール.mp3」というファイル名のものになります。
お試し用のコード
お試し用のコードを準備して、それを実行してみます。
以下が具体的なコードの内容です。
import { EmoApiClient } from "@ux-xu/emo-platform-api-nodejs";
import fs from "node:fs";
const ACCESS_TOKEN = process.env.EMO_ACCESS_TOKEN;
const REFRESH_TOKEN = process.env.EMO_REFRESH_TOKEN;
const ROOM_UUID = process.env.EMO_ROOM_UUID;
const FILE_PATH = "./ドラムロール.mp3";
async function main() {
const api = new EmoApiClient({
accessToken: ACCESS_TOKEN,
refreshToken: REFRESH_TOKEN,
});
const audio = fs.readFileSync(FILE_PATH);
const res = await api.postAudioMessage(ROOM_UUID, { audio });
console.log(res);
}
main().catch((err) => {
console.error("status:", err?.response?.status);
console.error("body :", err?.response?.data);
});
これを実行したところ、以下のように BOCCO emo で効果音のファイルを再生することができました。
【追記】 環境変数をファイルから読み込む
以前、以下の記事で書いた Node.js の標準機能を使い、環境変数をファイルから読み込む形にしてみます。
●【小ネタ】Node.js v21.7.0 の新機能で環境変数用のファイル読みこみを軽く試す: process.loadEnvFile() - Qiita
https://qiita.com/youtoy/items/ae838cacd43b3c3e61e1
コード
コードは、以下のとおりです。
import { EmoApiClient } from "@ux-xu/emo-platform-api-nodejs";
import fs from "node:fs";
process.loadEnvFile("./development.env");
const ACCESS_TOKEN = process.env.EMO_ACCESS_TOKEN;
const REFRESH_TOKEN = process.env.EMO_REFRESH_TOKEN;
const ROOM_UUID = process.env.EMO_ROOM_UUID;
const FILE_PATH = "./ドラムロール.mp3";
async function main() {
const api = new EmoApiClient({
accessToken: ACCESS_TOKEN,
refreshToken: REFRESH_TOKEN,
});
const audio = fs.readFileSync(FILE_PATH);
const res = await api.postAudioMessage(ROOM_UUID, { audio });
console.log(res);
}
main().catch((err) => {
console.error("status:", err?.response?.status);
console.error("body :", err?.response?.data);
});
元のコードと上記との差分は、 process.loadEnvFile("./development.env") の部分です。
環境変数を記載したファイル
上記を実行するには、環境変数の情報を記載したファイルが必要です。上記の例では、そのファイルのファイル名を development.env とする前提です。
そして、そのファイルの内容は以下で、ID・トークンを変数名とともに記載します。
EMO_ROOM_UUID=【部屋の ID】
EMO_REFRESH_TOKEN=【リフレッシュトークン】
EMO_ACCESS_TOKEN=【アクセストークン】




