2

api.ai アカウントに統合したサンプルの電報ボットがあります。以下のようにキーボードのボタンを表示したかったのですが、api.ai は電報に返信する本文しか送信していないようです。上記で説明したことをどのように達成できますか? 指示および/または解決策についてアドバイスしてください。ありがとう!

api.ai からのリプライ送信時に Telegram のキーボードカスタムボタンを表示させたい

サンプル インテントが呼び出されたときにこの json を返すフルフィルメント Webhook URL があります。

{
  "id": "af681b42-9ced-4f8f-ab0c-0559b210dc1a",
  "timestamp": "2016-07-15T01:47:30.896Z",
  "result": {
    "source": "agent",
    "resolvedQuery": "Hello",
    "action": "show-main",
    "actionIncomplete": false,
    "parameters": {},
    "contexts": [],
    "metadata": {
      "intentId": "e477976e-2412-4066-b320-48d7dedd5dfe",
      "webhookUsed": "true",
      "intentName": "Adobo"
    },
    "fulfillment": {
      "speech": "Hello world!",
      "source": "index.php",
      "data": {
        "chat_id": 1,
        "text": "hi there",
        "parse_mode": "HTML",
        "reply_markup": {
          "keyboard": [
            "A1",
            "A2"
          ],
          "one_time_keyboard": true,
          "resize_keyboard": true
        }
      }
    },
    "score": 1
  },
  "status": {
    "code": 200,
    "errorType": "success"
  },
  "sessionId": "4cb02864-9925-4d4c-a0f1-14dbab44add7"
}

「データ」の下に、返信マークアップ キーボードの json 形式を追加しました。

4

1 に答える 1

3

以前は (キーボードを使用せずに) テキストのみを送信できましたか?

構文エラーだと思います。フィールドは配列の"keyboard"配列であると想定されています。そのフィールドを以下のスニペットに置き換えてみてください。

"reply_markup": {
    "keyboard": [
        ["Day", "Week", "Month"],
        ["Users", "Retention"],
        ["sessions", "Events"],
        ["Back"]
    ],
    "one_time_keyboard": true,
    "resize_keyboard": true
}
于 2016-07-15T07:05:32.613 に答える