Help us understand the problem. What is going on with this article?

【改善済み】DialogflowからMicrosoft Flow(Azure Logic Apps)を呼ぶ際の注意点

※2019/6/18 追記
本記事の内容ですが、Dialogflow側のアップデートで改善済みのようです。
Microsoft Flow/Logic AppのURLをDialogflowにそのまま貼っても問題なく動くようになったようです。


前置き

Googleが提供する自然言語処理作成プラットフォームのDialogflowでは、Fulfillmentという機能で外部のWeb APIを呼び出し、インテント内でその結果を使うことができます。

また、Microsoft Flow(またはAzure Logic Apps)ではノンコーディングでHTTPリクエストをトリガーとした簡易プログラムを作ることができます。

そのためDialogflowからMicrosoft Flowを呼び出すことで、簡単に自然言語処理を含んだ処理をノンコーディングでつくることができる…のですが、ふつうにやると、エラーが出てハマります。

本記事は、その回避方法です。

Dialogflow+Microsoft Flowで起きるエラー

Dialogflowでインテントを設定し、そこから呼び出すことを想定します。
問題は、DialogflowにMicrosoft FlowのURLを設定する部分です。

image.png
以下のようにMicrosoft FlowからコピーしたURLを、
image.png
このようにDialogflowのFulfillmentにそのまま貼っただけでは、呼び出し時にDialogflowで以下のようなエラーが出てしまいます。

image.png

Microsoft Flowから返されるメッセージ↓

��{"error":{"code":"AuthorizationFailed","message":"You do not have permissions to perform action 'run' on scope '/triggers/manual/paths/'. Verify you are making the request with the appropriate HTTP method. See http://aka.ms/logic-trigger for details."}}

DialogflowのDiagnostic infoで確認できるレスポンス情報↓

{
  "responseId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "queryResult": {
    "queryText": "60",
    "action": "xxxx",
    "parameters": {
      "hoge": 0,
    },
    "allRequiredParamsPresent": true,
    "fulfillmentMessages": [
      {
        "text": {
          "text": [
            ""
          ]
        }
      }
    ],
    "intent": {
      "name": "projects/xxxx/agent/intents/xxxxxxxx",
      "displayName": "xxxxx"
    },
    "intentDetectionConfidence": 1,
    "diagnosticInfo": {
      "webhook_latency_ms": 739
    },
    "languageCode": "ja"
  },
  "webhookStatus": {
    "code": 16,
    "message": "Webhook call failed. Error: 401 Unauthorized"
  }
}

なぜか、 401の認証エラー が出ます。
Microsoft Flowに作ったHTTPトリガーのフローは認証不要でアクセスできるはずなのに…。

解決策

答えは以下にありました。

Using webhooks on dialogflow to Azure logic apps - stackoverflow

このように、URLの中にある「%2F」→「/」に変更してあげます。

image.png

これにより、おかしな認証エラーが出ずにDialogflowとMicrosoft Flowを連携させることができます。

補足

のちほどDialogflow+Microsoft FlowでLINE Botを作成する記事を出すので、DialogflowとMicrosoft Flowおよびその組み合わせについての詳細な解説はそちらをご参照ください。
→書きました:賢いLINE Botを完全無料&ノンコーディングで開発する(Dialogflow+Microsoft Flow)

himarin269
開発や研修・講座講師などをしています。C#/Azure/LINE API/スマートスピーカーなど。
http://himanago.hatenablog.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした