追記あり:結局、連携させることができました。
上手くいかなかったことも記録しておけば後々役に立つかもしれないので書いておきます。
やりたかったこと
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
できたこと
- IFTTT
- Alexaの”Item added to your To Do List”トリガーを利用して、AlexaのToDoリストへのタスクの追加を契機にアクションを実行
- Microsoft Power Automate
できなかったこと
- 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
- undifinedは本来はHTTPステータスコードが表示される個所
- エラーメッセージは以下の通り
- Power Automate側の実行履歴にログが残っていない
- トリガーからserviceは起動できているが、serviceが失敗する
考えていること
- Power Automate側の実行履歴にログが残っていないので、IFTTTから正しいURLでPower Automateを呼び出せていないものと思われる
- IFTTTに設定しているURLと同じURLを使って、Invoke-WebRequestでリクエストしてPower Automateを実行できているので、URLの誤入力ではない
- IFTTTに設定する際のエスケープが必要?と適当にやってみたがうまくいかない。
- URL全体をクォートしてみる ⇒ そもそもIFTTTは引用符始まりのURLを受け付けてくれないのでNG
- URLのクエリパラメータを<<<>>>で囲ってみる ⇒ エラーに変化はない
- うーんよくわからないけど何か制限事項があるのか...?
代替手段
- 米国にいればCortanaスキルを使ってAlexaとMicrosoft ToDoを簡単に連携できるのに…
- 独自の Alexa スキルを作成して、そのスキルから Power Automate の Webhook を呼び出す手がありそう
追記
日を置いて改めて設定を見直したら、BODYの指定を誤っていて(記号({)が全角文字だった)、それを直しただけで正常にPOSTできるようになりました。 とてもしょうもないのですが、連携できてよかった。
あとは余談ですが、Curlでアンパサンドを含むURLを送付するときはエスケープしないとBashの機能と競合するので注意しましょう。