[kinToys] kintoneでJSONを書いてvonageで自動応答させるまで
こんにちは、キン担ラボの本橋です。
みなさん電話って好きですか? 僕は掛けるのも緊張しますし、唐突に鳴る呼び出しを受けるのにも心拍数が上がります。しゃべる言葉をあらかじめ用意しておかないと人と話せない性格です。
苦手な仕事はコードに任せたいとの思いから、これまでにも電話を非同期化して負担を減らすシステムを作ってきました。最近はvonageというCPaaS(Communication Platform as a Service)を使っています。
vonageは簡単に言うと音声案内とかSMS認証とか、電話関係のだいたいのことが実現できるプラットフォームです。Twilioをご存じの方はその方向だと思ってください。
そのvonageの仕組みの中に、NCCOという電話の応答ルールを記述するjsonのフォーマットがあります。NCCOファイルをvonageに読み込ませることで、電話をかけるとNCCOに書いたとおりに自動応答させることができます。
そのNCCOファイルをkintoneアプリから構築してみよう、というのがこのnoteの趣旨です。
流れとしては
jsonで使用する情報を入力するためのkintoneアプリを作成
jsonに変換するkinToysテンプレートを作成
jsonを保存(NCCOのできあがり)
の3ステップです。
あとでvonageに読み込ませるためのWebサーバーを準備する必要もあるのですが、そこは別途分けて記事を書く予定にしています。
それではおつきあいください。
kintoneアプリを用意する
アプリテンプレートを用意しました。お急ぎの方はこちらをどうぞ。
kinToysを使ってJSONを作ろうとすると、条件分岐がないので繰り返し要素の最後の判定に困ります。そういう複雑な処理はkintone側に任せて、テーブルにjointというカラムを用意してそこにカンマを入力させています。
さらに個別に複雑な設定が必要になりそうなオプションは別フィールドに分けいます。数字入力で選択肢に回答するinputアクションや、音声回答を録音するrecordアクションなどで、タイムアウトや終了キーを設定したいときはそれぞれのオプションに手を加えてみてください。
kinToysテンプレートを用意する
kintoneのレコードをjsonファイル形式にまとめあげるにはkinToysを使います。こちらのChromeウェブストアからインストールしてください。
さきほどのkintoneアプリで使えるNCCO構築テンプレートはこんな具合です。
[
%ncco{
{
"action": "%action%",
"text": "%text%",
"language": "ja-JP",
"style": "%style%"
%options%
} %joint%
}%
]
%ncco{ ~ }% はループ記法です。こちらを使って、kintoneレコード内にあるサブテーブルのそれぞれの行を繰り返し展開しています。
NCCOを保存する
ここまでで準備完了、kinToysのポップアップを開いてCopyボタンをクリックしてください。
うまいこと設定できていれば、下のようなjsonがクリップボードに保存されているかと思います。
[
{
"action": "talk",
"text": "こんにちは、kintoneサンプルです",
"language": "ja-JP",
"style": "2"
} ,
{
"action": "talk",
"text": "こんなふうにおしゃべりできます",
"language": "ja-JP",
"style": "3"
} ,
{
"action": "talk",
"text": "いろいろな音声を喋らせて遊んでください。",
"language": "ja-JP",
"style": "4"
}
]
こちらを保存してvonageのAPIから呼び出すように設定していきます。
github gistにホスティングする
jsonファイルはvonageから呼び出せるように、どこかのWebサーバーに配置する必要があります。今回のように実験的にjsonを保存して外から呼び出したい、というケースではpostman mockserverやgithub gistがお手軽です。
github gistのrawファイルをそのまま呼び出すとHTTPヘッダのContent-Typeがプレーンテキストになってしまいます。vonageとしてはapplication/jsonで取得できないとエラーになってしまうため、githackを経由してHTTPヘッダを変更します。
このあたりの手順についてはまた別途記事化する予定です。
この記事が参加している募集
この記事が気に入ったらサポートをしてみませんか?