0こんにちは、サイオステクノロジー技術部の武井です。Service上のWebアプリで一覧表示する仕組みを作ってみました。写真を撮ってみました。JTalkはオープンソースの音声合成システムで、テキストを渡すとその内容を読み上げてくれます。DocumentDBはJSON形式の文書をそのまま保存できるスキーマレスのデータベースです。リレーショナル・データベースとは違い、スキーマの設計はいりません。やりとりされるJSONのデータをそのままデータベースに登録が可能であり、クエリ言語も慣れ親しんだSQLを使うので、データ操作も簡単です。ServiceはAzure上でアプリケーションを動作することができるPaaS環境になります。OSやアプリケーションサーバーを構築する必要もなく、パッチ当てもする必要がありません。開発者はソースコードさえ登録すれば、後の面倒なことは全部Azureがやってくれます。Service上で作成したPHPのWebアプリケーションからDocumentDBにアクセスして、会話を一覧表示します。文章だけではわかりにくいと思いますので、構成図を書いてみました。どんな仕組み?仕組みとしては以下です。Account」にアカウント登録する。Account」の管理画面からコールバックURLを設定する。BOTアカウントに対して発言をすると、このコールバックURLに対して、JSON形式でPostリクエストが来る。Pi上にWebアプリケーションとして構築する。Pi上のコールバックURL宛にリクエストがあったJSONを解析する。JTalkに渡して、喋らせる。APIを用いて、会話の内容をJSON形式のまま保存する。Service上に作成したWebアプリケーションにアクセスすると、会話の内容が一覧表示される。やって作るの?構築手順を記載します。Piの本家サイトで提供されているRaspbianのイメージを使いました。このあたりの方法はWebにたくさんありますので、そちらを参照して下さい。JTalkをインストールします。インストール対象のソフトウェアを以下のサイトからダウンロードして下さい。/usr/local/hts_engine_API/hts_voice/試しに「こんにちは」と喋らせてみます。/usr/local/open_jtalk/open_jtalk_dic_utf_8-1.09上記のコマンドを発行すると、「output.wav」というファイルができます。Out端子から音声が出力されません。以下のコマンドを実行して下さい。1以下のコマンドで音量を調節して下さい。Out端子にスピーカをつないで、以下のコマンドを実行して下さい。output.wav女性の声で「こんにちは」と聞こえてきたはずです。JTalkのインストールは完了です。JTalkについては以下の記事を参考にしました。この記事を作成したH氏に感謝致します。Accountに登録します。LINEのBOTを作成するためのAPIを無料で利用できるサービスです。以下のURLから登録して下さい。URL」」を指定するところが出てきます。Pi上に構築したWebアプリケーションのURLである必要があり、BOTに対して発言した時に、このURLに発言内容がHTTPSプロトコルでJSON形式で送られてきます。こちらご注意頂きたいのが、このURLは公的な認証機関でサインした証明書を利用したサイトでないとダメなのです。仕組み上このURLには外部からアクセスできる必要があります。セキュリティには十分お気をつけ下さい。次は、DocumentDBを作成する準備をします。DocumentDB」の順番にクリックして、一番右のブレードに出てくる画面で必要な事項を入力して「作成」をクリックして下さい。「ID」は任意の名称で結構です。サブスクリプションやリソースグループは環境に応じたものを入力して下さい。場所は自分の住んでいるところに一番近いほうが、お財布にやさしいかと思います。DocumentDBを作成する準備が整いました。本来なら、、これからデータベースとコレクションの作成を行わなければいけないのですが、以降に紹介するPHPスクリプトで自動的に作成されるようになっていますので、割愛します。Rootに以下のソースを置いて下さい。".$content);?>上記のコード中に「phpdocumentdb.php」を読み込んでいる部分があります。APIのラッパークラスです。以下で公開しております。作成していただいた方に感謝です!!https://github.com/cocteau666/AzureDocumentDB-PHPただしこれはこのままでは使用できません。ドキュメントの作成に失敗してしまいます。当時とAPIの仕様が変わったのだと思います。以下の変更を加えて下さい。".$content);の記述があります。JTalkに渡しているShellを呼び出しています。/tmp/output.wav次は、LINEからコールされるコールバックURLの呼び出し先を置くWebアプリケーション基盤を作成します。Serviceで実現します。Service」の順にクリックします。「追加」をクリックします。「アプリ名」に任意の名前を入力し、「サブスクリプション名」や「リソースグループ」は環境に応じて必要なものを入力して、最後に「作成」をクリックします。先ほど作成したアプリが一覧に表示されていることを確認します。先ほど一覧に表示されていたアプリ名の右端に黒い点が3つ並んだアイコンがあります。それをクリックして「ツール」をクリックします。(プレビュー)」をクリックします。「オン」をクリックします。「移動」をクリックします。Onlineが起動します。Online上で以下のソースコードを作成して下さい。ファイル名はindex.phpとして下さい。"</table>";?>ここでも同様にphpdocumentdb.phpを呼び出しています。Online上に配置して下さい。実は、このままではこのソースは動作しません。App上からcurlでhttps通信を行う場合、通信先の証明書発行元の認証局のルート証明書が必要になります。今回はそのようなことはせずに、SSL通信の証明書のチェックを無効にすることで回避します。こちら、本番環境ではこのようなことはやらないでください。phpdocumentdb.phpを以下のように修正して下さい。false);これで準備は整いました。動作確認してみましょう。先ほど登録申請したBOTアカウントに話しかけてみます。すると、応答が返ってきます。こちら、先ほどRaspberryPi上に作成したスクリプトが応答をして、メッセージを返しています。Piにつながったスピーカーから、BOTとのやりとりが音声で流れてます。Service上に作成したWebアプリケーションを起動してみましょう。BOTとのやりとりが一覧で表示されいます。Piから登録されたDocumentDB内のJSONデータを表示しています。いかがでしたでしょうか?なんとなく面白そうなサービスをくっつけただけで実用性は皆無ですが、Azureで色々なことができるんだなと実感頂けましたら幸いです。雑誌等の執筆依頼を受付しております。役に立たなかった0人がこの投稿は役に立ったと言っています。コメントをキャンセルメールアドレスは表示されません。Reserved.本サイトに掲載されている社名、製品名、サービス名等は各社の商標または登録商標です。プライバシーポリシーお問い合わせ。