Google HomeとAzure Functionsを連携させる
Google HomeとAzure Functionsを連携させて簡単なやり取りができるようにします。
動機
・家に使ってないGoogle Home miniがあったから
・成果が目に見えるのでAzureの勉強としてわかりやすく面白そう
今回やること
Azure Functionsと連携させてGoogle Homeに何かをさせようとしたときの土台になりそうなこちらの記事を再現します。
Google アシスタントアプリを開発する時に Fulfillment の先を C# で開発する方法(スマートスピーカーを遊びたおす会での LT 内容) - かずきのBlog@hatena
環境
・Windows10
・Azureアカウント(サブスクリプション持ち)
・Visual Studio 2017
Function APP新規作成(Azureポータル作業部分)
Azureポータルでにログインし、Function APPを新規作成します。
必要事項を記入し、作成すると以下のような項目ができます。
稲妻アイコンのものがFunction APPの本体ですね。
Function APP新規作成(Visual Studio作業部分)
Function APPの中身を作っていきます。
参考サイトではAzure Functions Core Toolsを使っていますが、
Visual Studio 2017でもできるようなので今回はローカルのVisual Studio 2017で作成します。
Visual Studio の新規作成にて、[Azure Functions]>[HTTP trigger]を選択します。
次に各クラスを作成します。
今回必要なのは大きく分けて2種類です。
・JSONの送受信部分
GoogleHomeとやり取りをするには、JSON形式で受け取ってJSON形式で返します。
よってその窓口になる部分を作ります。
・メイン関数部分
何を受け取った時に何と返すかを決める動作のメイン部分になります。
JSON送受信部分
基本的には以下のサイトを利用します。
・JSONのサンプルが公開されているサイト
Dialogflow Webhook Format | Actions on Google | Google Developers
・JSONを各言語のコードにしてくれるサイト
<リクエスト側>
コピーしたものを変換サイトの左ペインにペーストし、
右ペインで言語とnamespaceを変更します。
今回のnamespaceは「DialogflowWebhook.Requests」です。
[Copy Code]でコピーしたら、VisualStudioに戻ります。
クラスを新規追加し、ペーストします。
このときclass名が「Welcome」になっているので「DialogflowRequest」に変更します。
<レスポンス側>
リクエスト側と同様です。
コピーしてくるJSONのサンプルだけ異なります。
クラス名は「DialogflowResponse」です。
メイン関数部分
参考サイトよりコピーしました。
新規で作成したときデフォルトで「Function1.cs」が作成されていますが、今回は使用しないのでプロジェクトから外しています。
発行
Azureポータル上で作成したFunction APPに発行します。
発行先はすでに作成していますので、[既存のものを選択]を選びます。
発行が完了するとAzureポータル上で関数として表示されます。
[関数のURLの取得]にてこのFunction APPを呼び出すためのURLをコピーします。
Dialogflowの設定
Dialogflowの基本的な操作は以下を参考にさせていただきました。
Dialogflowでチャットボットをつくってみる - Qiita
今回Dialogflowで触る部分は以下です。
<新規Intents作成>
①新規Intentsの名前
この名前はメイン関数で指定してる名前になります。
②Training phrasesにGoogle Homeに問いかける文言を設定する
③Fulfillmentを[Enable]にする
<Fulfillmentの設定>
FulfillmentにAzureポータル上でコピーしたURLをペーストします。
動作確認
Google Assistantに接続し、動作確認します。
Intentsで登録した文言を送ると関数で指定した文言が返ってきますね!
ちょい足し
Intentsを増やして、返答パターンを増やしてみます。
<Dialogflow側>
新規Intensを作成します。
<関数側>
元がif構文なのでelse ifで分岐を増やします。
コードを変更したら上書き発行します。
動作確認します。
2パターンの返しができるようになりました!
以上をベースにもう少し複雑なやり取りができるようにしていきます!
【レポ】JAZUG女子部×JAWS-UGクラウド女子会 合同くりぱ勉強会
JAZUG女子部×JAWS-UGクラウド女子会 合同くりぱ勉強会に参加してきました。
JAZUG女子部×JAWS-UGクラウド女子会 合同勉強会
techplay.jp
Microsoftのクラウドサービス Azureのユーザグループ『JAZUG』
Japan Azure User Group | JAZUG
Amazonのクラウドサービス AWSのユーザグループ『JAWS-UG』
JAWS-UG(AWS Users Group – Japan)
上記二つにはそれぞれ女子部が存在します。
兼ねてより気になっていたこの女子部イベントに念願叶い参加してきましたので
その感想を書いていきます!
全体の印象
女子会、クリパがテーマということで、駄菓子やドーナツなどたくさんあってフランクな雰囲気でした。
TECHPLAYさんの施設自体もとてもきれい!
女性限定のイベントでしたが、エスコートも可ということで
男性も数名いらっしゃいました。
はじめにAzureについてざっくり
主催の方々のご挨拶の後に
JAZUG女子部の方から
まずはざっくりしたAzureの説明が!
中でも印象に残ってるのはサービスの種類について。
Azureのサービスは今時点でなんとおよそ272種類!(前日の夜に主催の方々が数えたそうです笑
あまりに多いので全てを知ってる人はほとんどいないそう…
Azureはやりたい用途に合ったサービスを見つけて
それ1つで実現することを想定されてるそうです。
続いてAWSについてザックリ
JAWS-UGクラウド女子会の方よりAWS のお話!
主にAWSの歴史とイベントについて。
印象に残っているのは、
AWSはオンプレからIaaS、PaaSを経てSaaSへ移行するまでに
たくさんあった課題の隙間を埋めていったというところ。
オンプレからクラウドまでを学ぶ身としてはこの辺りはちゃんとお勉強しておきたいところ…
Azureと比較して、
AWSはサービスをいくつか組み合わせてやりたいことを実現する形のようです。
最後にワークショップ
4人1組のチームでテーマに沿ったアーキテクチャを考えるワークショップでした!
テーマはこちら↓↓↓
『お題に沿ってクリスマスに関連したアーキテクチャを考える』
お題は
私たちはAWSを使ったIoTについてがテーマでした。
チームにまさにAWSのIoTに詳しい方がいらっしゃったので
アイデアを出すとどんどんぴったりなAWSのサービスを教えてくださり、
まったく初心者の私としては大変勉強になりました。
私たちのチームが考えたサービス名は『ボクとサンタさん』です。
サンタさんが来たことを子供が知るためのサービスです!
概要としては、
サンタさんが家に入ってきたことを家中に設置したいろいろなセンサーで感知し、
その情報をラズパイに集約→SORACOM AirでAWSに飛ばす。
AWS内ではAWS IoT→Lambda→デバイスへ通知という流れです。
おまけとして、デバイスに通知したあとにAlexaでサンタさんからのメッセージが聞けるというオプションもつけました笑
ほかのチームはクリスマスコフレやケーキに絡めたアーキテクチャなどがあり、聞いてるだけでわくわくしました!
また、それぞれのチームにスペシャリストが1人はいるようにチーム分けがされていたようです。(配慮が細やか!
おわりに
クラウドということもあってか、中々出会うことのできないオンプレやインフラ寄りの女性もちらほらいらっしゃってとても嬉しかったです!
主催様方の配慮も細やかで過ごしやすい空間でした。
今度はもう少しAzureの知識をつけてワークショップで貢献できるようにしていきますヽ(•̀ω•́ )ゝ✧