オンプレ系インフラエンジニアがAzureを勉強する

いつか誰かの何かの役に立つと嬉しいな

Azure FunctionsのDialogflow v2 API対応

はじめに

Google Homeで遊ぶときに利用しているDialogflowのv1 APIが2020年3月に完全シャットダウンしてしまいます。
(元々は2019年10月まででしたが延長されてました。

Release Notes  |  Dialogflow Documentation  |  Google Cloud

 
以前の記事で
Dialogflow+Azure Functionsで
Google Homeの設定をしていたので
こちらのv2対応版を書いていきます。

流れ

  • Azure Functionsの設定

  • Dialogflowの設定
 


Azure Functionsの設定

ちょっと変える程度かと思いきや、がらりと変わりました。
v1の時より汎用性のあるすっきりしたコードにできたので個人的には満足度が高いです。
コード自体はGitHubに記載してます。
 

Dialogflowの設定

設定から[API VERSION]の[V2 API]を有効にします。
[SAVE]します。

f:id:mitsunooon:20191120151855j:plain

f:id:mitsunooon:20191120151913j:plain

FulfillmentのURLを新しいものに書き換えます。

f:id:mitsunooon:20191120151933j:plain

以上で設定は終わりです。
 

動作確認

ちゃんと動きました。やったー。
 

f:id:mitsunooon:20191120155324j:plain

 

つまづいたところ

・WindowsAzure.Storageのバージョン

パッケージのバージョンをすべて最新安定版にしていたら以下のエラーが出てきました。

f:id:mitsunooon:20191120152148j:plain

Microsoft.Azure.WebJobs.Extensions.Storage:Can't bind Table to type 'Microsoft.WindowsAzure.Storage.Table.CloudTable'
 
調べたところ、WindowsAzure.Storageのバージョンが影響しているとのことでした。
9.3.3から9.3.1にダウングレードしたところ無事に動きました。

f:id:mitsunooon:20191120152207j:plain

 

・Table Storageの型

今回の例ではすべてstring型なので影響はないですが、
会社の備品管理を同様の構成でしようとしたところ、備品番号がFunctionsで認識できなくてハマりました。
原因としては、備品番号がTable Storage上ではint型で登録されているのに、Functions上ではstring型にしていたというだけの話でした。
Table Storageのほうを変更しました。
 
 

参考サイト様