0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

BOCCO emo の SDK(Node.js版)で API を使った「音声メッセージ送信」を試す【IoTLT:2】

Last updated at Posted at 2025-11-09

(この記事は 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

2025-11-09_16-20-30.jpg

SDK を使う場合

SDK を使う場合の話です。

サンプルコード・その下に書かれた記載(以下に画像で示したもの)を見ると、docsフォルダ内のドキュメントを見る必要がありそうでした。

●@ux-xu/emo-platform-api-nodejs - npm
 https://www.npmjs.com/package/@ux-xu/emo-platform-api-nodejs

2025-11-09_16-31-12.jpg

GitHubリポジトリからファイルを取得し、ドキュメントの中の記載を見てみます。「音声メッセージ送信」に関する SDK の関連する処理は、以下になりそうです。

2025-11-09_16-26-18.jpg

「EmoApiClient」の「postAudioMessage()」を使えば良さそうです。そして、引数には以下を指定するようです。

2025-11-09_16-34-01.jpg

部屋の ID は、過去のお試しで取得・利用していたもので良さそうです。あとは「PostAudioMessageRequest」について、ドキュメントの記載を見てみます。

該当箇所を見ると、以下のように書かれています。

2025-11-09_16-36-02.jpg

以下にも書かれた、「{ 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・トークンを変数名とともに記載します。

development.env
EMO_ROOM_UUID=【部屋の ID】
EMO_REFRESH_TOKEN=【リフレッシュトークン】
EMO_ACCESS_TOKEN=【アクセストークン】
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?