かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

Azure Bot Services の LINE のチャンネルを試してみた

はじめに

とりあえず LINE に繋ぐ手順を試してみました。

本文

昨日みつけた LINE のチャンネルを試してみました。ドキュメントもあるのでそっち見てもOK

docs.microsoft.com

LINE の Developers Console で適当にプロバイダーを作ります(すでにあるならそれを使ってもいい) プロバイダーがないとボットとかも作れないので。プロバイダーが同じボットや Clova のスキルはユーザーを識別するための ID が同じになるので、ユーザーデータを共有する仕組みが作りやすい点が強いです。

さて、作ったら Messaging API を作りましょう。必須入力項目は全部なので全部入れましょう。 プランは Developer-trial を使いましょう。2019/02/25 時点ではドキュメントに記載はありませんが、Freeだと動きませんでした。

作成した Messaging API を選択してチャンネル基本情報から以下の値をゲットします。

  • Channel Secret
  • アクセストークン(再発行ボタンを押して作成してください。とりあえず 0 時間で)

Azure ポータルに移動して LINE 対応させたいボットのボット チャンネル登録を選択してチャンネルを開きます。そして LINE のアイコンをクリックします。

先ほど取得した Channel Secret とアクセストークンを入れる場所があるので入れます。

f:id:okazuki:20190222110123p:plain

入力したら、その下にある Webhook URL をコピーしておいて保存しておきます。

LINE の Developers Console に移動します。

そして、先ほど作成した Messaging API のチャンネル基本情報に Webhook URL という項目があるので編集ボタンを選択して Azure ポータルでコピーした URL を貼ります。

f:id:okazuki:20190222110434p:plain

接続確認ボタンを押して成功すれば OK

そして、デフォルトでは Webhook 送信が有効化されてないので有効化します。

f:id:okazuki:20190222110951p:plain

ボットをちゃんと作ってると LINE の自動応答メッセージは邪魔になることもあるので、その場合はLINE@機能の利用から自動応答メッセージをオフにします。

f:id:okazuki:20190222111357p:plain

同じページに LINE アプリへの QR コードという項目があるので LINE アプリから登録してみましょう。

動いた!!

f:id:okazuki:20190225121540j:plain

ということで

Azure Bot Service を使うと Bot Framework SDK を使って作ったボットを LINE に繋ぐことができます。 Messaging API を使って Webhook 使って自分であれこれするのに比べて以下のメリットがあるように感じます。

  • ユーザ単位での情報保存機能がある
  • 会話単位での情報保存機能がある
  • 今対話のどのフェーズなのかを管理してくれる機能がある(ダイアログ)
  • Azure の自然言語解析との連携機能がある(LUIS っていうサービス)
  • Azure の QnA Maker という QA に回答してくれる API を公開するサービスとの連携機能がある
  • LINE 以外にもつながる

過去の情報:現時点で成功してない

これは最初に試してうまくいかなかったときの情報です。
プランを Free で作るとこうなりました。

話しかけても応答がない。一応このボットは Microsoft Teams と WebChat で動いてるけど LINE で話しかけたときだけ以下のようなエラーが Application Insights に出てきてる。

Message
POST to ボットの名前 failed: POST to the bot's endpoint failed with HTTP status 500 POST to the bot's endpoint failed with HTTP status 500 

Exception type
System.Exception

Failed method
Microsoft.Bot.ChannelConnector.BotAPI+<PostActivityToBotAsync>d__31.MoveNext

コールスタックはこんな感じ。

Microsoft.Bot.Schema.BotException:
   at Microsoft.Bot.ChannelConnector.BotAPI+<PostActivityToBotAsync>d__31.MoveNext (Microsoft.Bot.ChannelConnector, Version=3.2.2.5, Culture=neutral, PublicKeyToken=null)
Microsoft.Bot.ChannelConnector.BotAPI+<PostActivityToBotAsync>d__31.MoveNext で処理された内部例外 System.Exception:
   at Microsoft.Bot.ChannelConnector.BotAPI+<PostActivityToBotAsync>d__31.MoveNext (Microsoft.Bot.ChannelConnector, Version=3.2.2.5, Culture=neutral, PublicKeyToken=null)

ん~、なんだろう時間が解決する系??