スキルにメッセージリクエストを送信する


スキルにメッセージリクエストを送信する

スキルメッセージREST APIを使えば、セッション外のアプリやサービスからスキルへの非同期メッセージリクエストを送信できます。Alexaは、REST APIを受信すると、メッセージ本文にMessaging.MessageReceivedインテントを設定したメッセージをスキルに配信します。

セッション外からのメッセージを受信するには、以下のガイドラインに従います。

スキルへのメッセージ送信ガイドライン

スキルへのメッセージ送信リクエストへの応答として、Alexaはメッセージを受け取り、スキルに配信するキューに入れます。受け取ったメッセージをスキルに正常に配信するには、スキルのエンドポイントを利用できる必要があります。正常な配信には、スキルがコンテキストを「継承」し、メッセージを確認しなければなりません。

スキルがオンラインの場合、メッセージは処理と同時に配信されます。Amazonでは、メッセージ配信の時刻や順序は保証されません。スキルにメッセージが配信されたかどうかを判断するのは、呼び出し元の責任となります。配信メカニズムにはビルトインの受信確認機能はありません。複数のリクエストが送信された場合の重複メッセージの処理も呼び出し元の責任です。

以下の図は、セッション外のメッセージ送信フローを示しています。

アプリとLWA間のメッセージ送信に続いて、スキルメッセージAPI、リストAPIが実行されます。
クリックで拡大表示

スキルで受信したメッセージを処理する

スキルは、Messaging.MessageReceivedインテントとしてメッセージを受信します。リクエスト形式の詳細については、Messaging Interface Referenceを参照してください。

以下は、AlexaがスキルメッセージAPIから受け取るリクエストの例です。

{
    "version": "1.0",
    "context": {
        "System": {
            "user": {
                "userId": "user.id.1",
                "accessToken": "someAccessToken.1"
            },
            "apiEndpoint": "https://api.amazonalexa.com",
            "apiAccessToken": "someAccessToken.2"
        }
    },
    "request": {
        "type": "Messaging.MessageReceived",
        "requestId": "一意のリクエストID",
        "timestamp": "2022-10-03T16:20:50.52Z",
        "message": {
            "sometag": "何らかのメッセージ"
        }
    }
}

スキルは、Messaging.MessageReceivedインテントに対して、メッセージを受信したことを示す確認応答をすみやかに送信する必要があります。確認を送信しない場合、Alexaは有効期限が切れるまでメッセージを送信し続けます。

確認応答として空の成功メッセージを送信します。スキルサービスがメッセージの受信後に他のAPI呼び出しを行う際に、これらのAPIリクエストが同期的に戻された後もコンテキストを継承することが重要です。詳細については、Messaging.MessageReceived応答を参照してください。


このページは役に立ちましたか?

最終更新日: 2024 年 02 月 28 日