LoginSignup
6
5

More than 1 year has passed since last update.

NOBY APIを使って、Twilioで音声ボットを作る

Last updated at Posted at 2019-09-28

2023年5月1日を持ちまして、株式会社KDDIウェブコミュニケーションズのTwilioリセール事業が終了したため、本記事に記載されている内容は正確ではないことを予めご了承ください。

はじめに

みなさん、こんにちは。
KDDIウェブコミュニケーションズのTwilio事業部エバンジェリストの高橋です。

突然ですがみなさん、Noby APIって知っていますか?
マッシュアップアワードでも有名人な、青島さんが個人で運営されている会話エンジンで、非常に簡単に自然対話ができるサービスです。しかも無料!
詳しくはこちらの記事を参照してください。
【Noby API】ノビィ取り扱い説明書【CotoGoto】

Noby APIを使えば、簡単にボットを作ることができるので、Twilioと連携させて音声ボットを作ってみたいと思います。

作業手順

  • Noby APIの認証キーを取得する。
  • Twilio Studioを使ってコールフローを作成する。
  • 電話番号に対して、作成したStudioフローを割り当てる。

ハンズオン

Noby APIの認証キーを取得する。

認証キーの取得方法は、こちらの記事を御覧ください。
【Noby API】ノビィ取り扱い説明書 使い方編【CotoGoto】
認証キーは文字列になりますので、忘れずにメモしておきましょう。

Twilio Studioを使ってコールフローを作成する。

Twilio Studioは、コールフローをドラッグアンドドロップで作ることができるツールです。
今回はすでに作成ずみのコールフローをひな形にして、必要なところを修正していきましょう。

Twilioのアカウントを持っていない方は、こちらの記事を参考にトライアルアカウントを作成してください。

  • こちらのページからログインを行い、Twilio管理コンソールに入ります。
  • 電話番号を購入していない方は、050番号を一つ購入してください。すでに番号を持っている方は、そちらを使っても大丈夫です。
  • 管理コンソールの左側にあるボタンアイコン(ドットが3つかかれたアイコン)を押して、スライドメニューを開いて、Studioを選択します。
スクリーンショット 2019-09-28 15.44.48.png
  • 赤いプラスアイコンをクリックするか、Create a new flowボタンを押して、新しいフローを作成します。
  • FLOW NAMEに適当な名前を入力して、Nextボタンを押します。
  • Import from JSONを選択して、Nextボタンを押します。
スクリーンショット 2019-09-28 16.02.01.png
  • New Flowダイアログのコード欄に、以下のJSONをすべて貼り付けます。
{
  "description": "NOBYBOT",
  "states": [
    {
      "type": "InitialState",
      "name": "Trigger",
      "properties": {
        "offset": {
          "x": 0,
          "y": 0
        },
        "flow_url": "https://webhooks.twilio.com/v1/Accounts/ACXXXX/Flows/FWXXXX"
      },
      "transitions": [
        {
          "event": "incomingMessage",
          "conditions": [],
          "next": null,
          "uuid": "acc8302d-5dcc-449c-b719-8aa108e2e6c7"
        },
        {
          "event": "incomingCall",
          "conditions": [],
          "next": "FF337c3817e9089643498ccae2f6264a95",
          "uuid": "8c75c995-ad6d-40a0-8317-8b9860886c0e"
        },
        {
          "event": "incomingRequest",
          "conditions": [],
          "next": null,
          "uuid": "1d2398ce-3694-4fb0-8ef1-11dff4d260ce"
        }
      ],
      "sid": "FF4c868c422ccb86add0b83168d3992d55"
    },
    {
      "type": "Webhook",
      "name": "NOBY_API",
      "properties": {
        "offset": {
          "x": 20,
          "y": 690
        },
        "method": "GET",
        "url": "https://app.cotogoto.ai/webapi/noby.json?appkey=ここに認証キーを入れる&text={{widgets.TALK.SpeechResult}}",
        "body": null,
        "timeout": null,
        "parameters": null,
        "save_response_as": null,
        "content_type": "application/x-www-form-urlencoded;charset=utf-8"
      },
      "transitions": [
        {
          "event": "success",
          "conditions": [],
          "next": "FF80c80357e172a604e42653b91c2f0ef2",
          "uuid": "867ebd37-3215-4e4a-af05-2d3c1ecc86df"
        },
        {
          "event": "failed",
          "conditions": [],
          "next": null,
          "uuid": "aaf7c49a-82c6-4fa8-bc6d-9238473742b2"
        }
      ],
      "sid": "FFcb0e9c9d7d9eeca1a6712739518bf5bc"
    },
    {
      "type": "Gather",
      "name": "TALK",
      "properties": {
        "offset": {
          "x": 30,
          "y": 430
        },
        "timeout": 5,
        "finish_on_key": "#",
        "stop_gather": true,
        "number_of_digits": null,
        "save_response_as": null,
        "say": "{{flow.variables.noby_text}}",
        "play": null,
        "voice": "Polly.Takumi",
        "language": "ja-JP",
        "loop": 1,
        "hints": null,
        "gather_language": "ja-JP"
      },
      "transitions": [
        {
          "event": "keypress",
          "conditions": [],
          "next": null,
          "uuid": "207ed041-ea33-4502-8f44-776e793e6833"
        },
        {
          "event": "speech",
          "conditions": [],
          "next": "FFcb0e9c9d7d9eeca1a6712739518bf5bc",
          "uuid": "563d8c51-9fda-4e7d-a09c-addc92a8e5cb"
        },
        {
          "event": "timeout",
          "conditions": [],
          "next": null,
          "uuid": "90bcfafe-9b44-4ead-b49f-34ecb44aa82f"
        }
      ],
      "sid": "FF6e79e00f85e7b743e161b1879204a84e"
    },
    {
      "type": "SetVariables",
      "name": "DefaultSetting",
      "properties": {
        "offset": {
          "x": 110,
          "y": 160
        },
        "variables": [
          {
            "key": "noby_text",
            "value": "僕はノビー。僕と話をしよう。何か話してね。"
          }
        ]
      },
      "transitions": [
        {
          "event": "next",
          "conditions": [],
          "next": "FF6e79e00f85e7b743e161b1879204a84e",
          "uuid": "7c73b43e-0f8f-4a68-a874-85ad6166bc2d"
        }
      ],
      "sid": "FF337c3817e9089643498ccae2f6264a95"
    },
    {
      "type": "SetVariables",
      "name": "NOBY_REPLY",
      "properties": {
        "offset": {
          "x": -130,
          "y": 950
        },
        "variables": [
          {
            "key": "noby_text",
            "value": "{{widgets.NOBY_API.parsed.text}}",
            "index": "0"
          }
        ]
      },
      "transitions": [
        {
          "event": "next",
          "conditions": [],
          "next": "FF6e79e00f85e7b743e161b1879204a84e",
          "uuid": "5a4c4942-ecdb-4baa-bc6b-ab345aa5dc53"
        }
      ],
      "sid": "FF80c80357e172a604e42653b91c2f0ef2"
    }
  ]
}
スクリーンショット 2019-09-28 16.08.46.png
  • 45行目のここに認証キーを入れるという文字を、NOBY APIの認証キーに置き換えます。
  • Nextボタンを押します。
  • 以下のようなフローが読み込まれます。
スクリーンショット 2019-09-28 16.14.45.png

電話番号に対して、作成したStudioフローを割り当てる。

  • スライドメニューからPhone Numbersを選択します。
  • 購入済みの050番号をクリックして選択します。
  • A CALL COME INという項目のプルダウンからStudio Flowを選択し、その右側のプルダウンから先程作成したStudioフローの名前を選択します。
  • Saveボタンを押します。

テスト

設定した電話番号に電話をかけて、何か会話をしてみましょう。

まとめ

NOBY APIはとても簡単につかうことができる会話エンジンで、色々と秘密の機能なんかもあります。
ぜひAPIドキュメントを読んで色々と試してみましょう。


Twilio(トゥイリオ)とは

https://twilio.kddi-web.com
Twilioは音声通話、メッセージング(SMS/チャット)、ビデオなどの 様々なコミュニケーション手段をアプリケーションやビジネスへ容易に組み込むことのできるクラウドAPIサービスです。初期費用不要な従量課金制で、各種開発言語に対応しているため、多くのハッカソンイベントやスタートアップなどにも、ご利用いただいております。

6
5
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
6
5