Viber продолжает вставлять URL нажатой кнопки в беседу

Я делаю приложение для чат-бота, которое ищет рейсы. Когда рейс обнаружен, я возвращаю карусель с кнопками и хочу, чтобы пользователь был перенаправлен на веб-сайт после нажатия на них. Это работает, только проблема в том, что нажатие кнопки помещает URL в беседу. Есть ли способ просто открыть URL-адрес, не вставляя его в разговор?

JSON, который я отправляю в Viber REST API:

{
   "type":"rich_media",
   "min_api_version":6.8,
   "receiver":"asmS1TwIYkPVxpod3rNCYg==",
   "rich_media":{
      "Type":"rich_media",
      "ButtonsGroupColumns":6,
      "ButtonsGroupRows":7,
      "Buttons":[
         {
            "Columns":6,
            "Rows":4,
            "ActionType":"open-url",
            "OpenURLType":"external",
            "ActionBody":"http://localhost:60219/Booking?flightId=1&sessionid=3b0f51f5-cf88-4d1e-a64b-1222e19b4702&adults=1&children=0&infants=0",
            "Text":"<b>Best Offer - 68.99 EUR</b><br />Bratislava to Nis on 18Oct at 14:10",
            "Image":"http://localhost:60219/api/v1/FlightInfo/FlightDetail/Viber?flightId=1&returnFlightId=",
            "TextVAlign":"bottom",
            "TextHAlign":"center"
         },
         {
            "Columns":6,
            "Rows":1,
            "ActionType":"open-url",
            "OpenURLType":"external",
            "ActionBody":"http://localhost:60219/Booking?flightId=1&sessionid=3b0f51f5-cf88-4d1e-a64b-1222e19b4702&adults=1&children=0&infants=0",
            "Text":"DEMO booking",
            "TextVAlign":"center",
            "TextHAlign":"center"
         },
         {
            "Columns":6,
            "Rows":1,
            "ActionType":"open-url",
            "OpenURLType":"external",
            "ActionBody":"https://www.ryanair.com/gb/en/booking/home/BTS/INI/2019-10-18//1/0/0/0",
            "Text":"Book now",
            "TextVAlign":"center",
            "TextHAlign":"center"
         },
         {
            "Columns":6,
            "Rows":1,
            "ActionType":"open-url",
            "OpenURLType":"external",
            "ActionBody":"http://localhost:60219/FlightDetail?flightid=1",
            "Text":"Flight Details",
            "TextVAlign":"center",
            "TextHAlign":"center"
         },
         {
            "Columns":6,
            "Rows":4,
            "ActionType":"open-url",
            "OpenURLType":"external",
            "ActionBody":"http://localhost:60219/PriceAlert?departureAirportId=ce43057e-afe6-4592-8759-9ea9643bb566&arrivalAirportId=3f43e185-bba3-4216-813d-473bfdbb024d",
            "Text":"<b>Set the Price Alert for  BTS-INI</b><br />We will notify you when the price will be below level set by you.",
            "Image":"http://localhost:60219//content/images/price_alerts_default_image.jpg",
            "TextVAlign":"bottom",
            "TextHAlign":"center"
         },
         {
            "Columns":6,
            "Rows":3,
            "ActionType":"open-url",
            "OpenURLType":"external",
            "ActionBody":"http://localhost:60219/PriceAlert?departureAirportId=ce43057e-afe6-4592-8759-9ea9643bb566&arrivalAirportId=3f43e185-bba3-4216-813d-473bfdbb024d",
            "Text":"Set Price Alert ",
            "TextVAlign":"center",
            "TextHAlign":"center"
         }
      ]
   }
}

1 ответ

Согласно официальной документации Viber API,

Параметры сообщения Rich Media и его кнопки также используются для клавиатуры. Вы можете найти дополнительную информацию о них в следующей статье.

Они также упоминают,

Нажатие кнопки на клавиатуре вызовет другой ответ в зависимости от значения кнопки "actionType ".

Для открытого URL ActionType:

  • Значение ActionBody отправляется в учетную запись в виде текстового сообщения (через событие сообщения).

  • Значение ActionBody открывается в браузере.

  • Значение ActionBody отображается в ветке чата как сообщение от пользователя.

Похоже, что третий вариант используется вместо второго в списке выше.

https://developers.viber.com/docs/tools/keyboards/#buttons-parameters

Для кнопки есть параметр "Без звука":Determine whether the user action is presented in the conversationПо умолчанию это false, но вы можете его изменить!

Другие вопросы по тегам