0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2019-02-17

※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)

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?