2
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・JavaScript】

Last updated at Posted at 2025-11-09

(この記事は IoTLT の Advent Calendar 2025JavaScript の Advent Calendar 2025 の記事です)

はじめに

この記事の内容は、「Node.js版の BOCCO emo の SDK(emo-platform-api-nodejs)」を使い、「BOCCO emo の API(BOCCO emo Platform API)」を使った簡単な発話の処理を試した話です。

前に BOCCO emo に関して以下の記事を書いたことがあったのですが、この時は curl と Node.js を使い、API を直接扱っていました。

●BOCCO emo を開発者モードにして API で扱う(簡単な発話)【curl と Node.js】 - Qiita
 https://qiita.com/youtoy/items/d453d65efaacbe77e203

今回は、以下の Node.js版の SDK を使って、上記の記事でやっていたことと同じ内容(簡単な発話)を試します。
※ SDK の最終更新が 3年前となっている部分は、少し気になりつつ

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

情報を確認しつつ試していく

ここから、公式の情報を確認しつつ、SDK を試してみます。

SDK に関する公式情報

今回使う SDK の情報は、以下の公式の APIドキュメントに情報が掲載されています。

●APIドキュメント | BOCCO emo Platform API
 https://platform-api.bocco.me/api-docs/#overview--%E6%9C%AC%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6

上記のページに、以下の「SDK(ソフトウェア開発キット)」という部分があり、ここに Python版・Node.js版の SDK の情報が書かれています。

2025-11-09_01-38-59.jpg

インストールコマンド

パッケージのインストールコマンドは、以下になるようです。

npm install @ux-xu/emo-platform-api-nodejs

サンプルコード

また、サンプルコードは以下の Usage の部分に書かれています。

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

import type { AxiosError } from 'axios'
import { EmoApiClient } from '@ux-xu/emo-platform-api-nodejs'

const apiClient = new EmoApiClient({
  accessToken: 'YOUR ACCESS TOKEN',
  refreshToken: 'YOUR REFRESH TOKEN',
})

// Get my account information
apiClient.getMe()
  .then(response => {
    console.log(response)
  })
  .catch((error: AxiosError) => {
    console.error(`Status code: ${error?.response?.status}`)
    console.error(error?.response?.data)
    console.log(error)
  })

// Get my rooms
apiClient.getRooms()
  .then(response => {
    console.log(response)
  })
  .catch((error: AxiosError) => {
    console.error(`Status code: ${error?.response?.status}`)
    console.error(error?.response?.data)
  })

// response example
{
  listing: { offset: 0, limit: 50, total: 1 },
  rooms: [
    {
      uuid: 'bcbcbcbc-1234-5678-abcd-aaaaaaaaaaaa',
      name: 'My first room',
      roomType: 'normal',
      roomMembers: [Array]
    }
  ]
}

// Post a message
// You can obtain uuids of rooms from `getRooms` API.
const roomUuid = 'bcbcbcbc-1234-5678-abcd-aaaaaaaaaaaa'
apiClient
  .postTextMessage(roomUuid, {
    text: 'Hello, BOCCO!',
  })
  .then(response => {
    console.log(response)
  })
  .catch((error: AxiosError) => {
    console.error(`Status code: ${error?.response?.status}`)
    console.error(error?.response?.data)
  })

SDK を使ってみる

それでは、SDK を使ってみます。

下準備

SDK を使った今回のお試しは、簡単な発話を試します。

SDK のサンプルコードでいうと、以下の「postTextMessage()」を使った処理です。

// Post a message
// You can obtain uuids of rooms from `getRooms` API.
const roomUuid = 'bcbcbcbc-1234-5678-abcd-aaaaaaaaaaaa'
apiClient
  .postTextMessage(roomUuid, {
    text: 'Hello, BOCCO!',
  })
  .then(response => {
    console.log(response)
  })
  .catch((error: AxiosError) => {
    console.error(`Status code: ${error?.response?.status}`)
    console.error(error?.response?.data)
  })

これを試すには、以下の下準備が必要です。

  • パッケージ(emo-platform-api-nodejs)のインストール
  • 以下 3つのトークンなどの取得
    • アクセストークン
    • リフレッシュトークン
    • 部屋の ID

トークンなどの取得方法は、冒頭にも掲載していた過去の記事に書いているので、その記事をご参照ください。また、部屋の ID については、今回の SDK を使った処理でも取得できるようです。

ちなみに、アクセストークンは 1時間で有効期限切れとなるものですが、今回使う SDK を使った場合は、その情報を自動で更新してくれるようです(リフレッシュトークンを使って、アクセストークンの期限切れに自動で対応する処理が入っているようでした)。

今回のお試し用のコード

以下は、今回のお試し用のコードです。
※ トークンや ID をコードに直書きしてしまっていますが、本来は環境変数で扱うなどの方法を用いるのが良いです

import { EmoApiClient } from "@ux-xu/emo-platform-api-nodejs";

const apiClient = new EmoApiClient({
  accessToken:
    "【アクセストークン】",
  refreshToken: "【リフレッシュトークン】",
});

const roomUuid = "【部屋の ID】";
apiClient
  .postTextMessage(roomUuid, {
    text: "こんにちは!SDKを使ってメッセージを送信しています。",
  })
  .then((response) => {
    console.log(response);
  })
  .catch((error) => {
    console.error(`Status code: ${error?.response?.status}`);
    console.error(error?.response?.data);
  });

内容は、公式のサンプルコードをもとに、処理の一部を削って作ったものです。上記を実行すると、BOCCO emo にテキストメッセージが送られ、BOCCO emo がそれを読み上げるという動作を確認できました。

その他

以下は、今回の内容を進める中で、「BOCCO emo がメッセージを受け取ったものの発話しない状態になった」というのがあり、その際に調べた内容です。メモとして、内容を掲載してみます。
※ なお、自分の場合は BOCCO emo の再起動でなおりました

●呼びかけに反応しなくなった
 https://www.bocco.me/faq/not-responding-to-my-call-2/

●BOCCO emo | よくあるお問い合わせと自分でできる解決法3選|ユカイ工学
 https://note.com/ux_xu/n/n52ab378ccb80

2
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
2
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?