IFTTT と Micorosoft Power Automate を連携して Alexa から Microsoft TODO にタスク登録しようとしてうまくいかなかった記録

追記あり:結局、連携させることができました。

上手くいかなかったことも記録しておけば後々役に立つかもしれないので書いておきます。

やりたかったこと

Alexa 経由で音声で、Microsoft TODO にタスクを登録したい。

やろうとしたこと

Webhook で IFTTT をトリガーに Microsoft Flow を動かす - Qiitaを参考に以下をやってみようとした。

  • IFTTT
    • Alexaの”Item added to your To Do List”トリガーを利用して、AlexaのToDoリストへのタスクの追加を契機にアクションを実行
    • Webhooksの"Make a web Request"アクションを利用して、AlexaのToDoリストに追加されたタスクの名称をBodyにしつつ、Power AutomateのWebhookへリクエストを送る
  • Microsoft Power Automate
    • "HTTP要求の受信時”を使ってリクエストを受け付ける
    • "タスクの作成(プレビュー)"を使ってMicrosoft ToDoにリクエストの内容でタスクを作成する

できたこと

  • IFTTT
    • Alexaの”Item added to your To Do List”トリガーを利用して、AlexaのToDoリストへのタスクの追加を契機にアクションを実行
  • Microsoft Power Automate
    • "HTTP要求の受信時”を使ってリクエストを受け付ける
    • "タスクの作成(プレビュー)"を使ってMicrosoft ToDoにリクエストの内容でタスクを作成する
      • ローカルマシンからInvoke-WebRequestコマンドレットを利用してタスクを作成することができた
        • Invoke-WebRequest $URL -Method POST

できなかったこと

  • IFTTTでWebhooksの"Make a web Request"アクションを利用して、AlexaのToDoリストに追加されたタスクの名称をBodyにしつつ、Power AutomateのWebhookへリクエストを送ること
    • トリガーからserviceは起動できているが、serviceが失敗する
      • エラーメッセージは以下の通り
        • Action failure message: Unable to make web request. Your server returned a undefined
    • Power Automate側の実行履歴にログが残っていない

考えていること

  • Power Automate側の実行履歴にログが残っていないので、IFTTTから正しいURLでPower Automateを呼び出せていないものと思われる
  • IFTTTに設定しているURLと同じURLを使って、Invoke-WebRequestでリクエストしてPower Automateを実行できているので、URLの誤入力ではない
  • IFTTTに設定する際のエスケープが必要?と適当にやってみたがうまくいかない。
    • URL全体をクォートしてみる ⇒ そもそもIFTTTは引用符始まりのURLを受け付けてくれないのでNG
    • URLのクエリパラメータを<<<>>>で囲ってみる ⇒ エラーに変化はない
  • うーんよくわからないけど何か制限事項があるのか...?

代替手段

追記

日を置いて改めて設定を見直したら、BODYの指定を誤っていて(記号({)が全角文字だった)、それを直しただけで正常にPOSTできるようになりました。 とてもしょうもないのですが、連携できてよかった。

あとは余談ですが、Curlでアンパサンドを含むURLを送付するときはエスケープしないとBashの機能と競合するので注意しましょう。