В API мессенджера Facebook, как предотвратить запись полезной нагрузки кнопки обратной передачи в окно чата при нажатии?

TLDR; @ нижний

Я задал следующий вопрос в разделе ошибок Facebook

ПРИМЕЧАНИЕ. Это скорее предложение по дизайну платформы, чем ошибка, поскольку мне не удалось найти портал отзывов о Chat API. В настоящее время я создаю чат-бота, который позволяет пользователю отслеживать цель. Он скажет что-то вроде «Вы ходили гулять 12 июля 2016 года?» и есть кнопки Да/Нет ниже.
В настоящее время, чтобы передать намерение, день и логическое значение достижения, мне нужно создать строку, подобную этой: , дата отслеживается [[[{date_tracked}]]]" и используйте регулярное выражение для захвата переменных с разделителями. Это может привести к ошибке синтаксического анализа в других случаях, когда шаблонные строки в полезной нагрузке являются переменными, введенными пользователем, т. Е. Если «{goal_achieved}» было заменено целевой переменной «>> meditated», тогда регулярное выражение, которое фиксирует шаблонную переменную, может завершиться ошибкой. .
Можно было бы использовать полезную нагрузку обратной передачи для хранения строки в кодировке JSON, но проблема в том, что строка полезной нагрузки регистрируется в пользовательском выводе, а строки JSON немного уродливы и запутаны. Проблемы, с которыми я сталкиваюсь, могут быть легко решены. исправлено, если полезная нагрузка не была зарегистрирована для пользователя. Вместо этого запишите текст для кнопки, чтобы помочь пользователю подтвердить, что кнопка была нажата.
Если это невозможно, есть ли какие-либо другие рекомендации по кодированию данных в полезную нагрузку кнопки?

Был предложен следующий ответ (Марк Уилтсе)

Здравствуйте, Джастин. К сожалению, в настоящее время наша структура полезной нагрузки не поддерживает функциональность, которую вы пытаетесь реализовать. Насколько я понимаю, вы хотите использовать полезную нагрузку, чтобы сообщить своему бэкэнду, достиг ли пользователь своей «цели» в эту конкретную дату. Я бы посоветовал вам создать свой ответ полезной нагрузки для кнопки на вашем конце, прежде чем передавать его нам, что в основном является идеей JSON, которая у вас была изначально. Я знаю, что это немного громоздко, но ответ полезной нагрузки, переданный обратно, не зависит от текста, который был предоставлен в потоке мессенджера. Я бы посоветовал вам также попытаться очистить свои строки, если вы беспокоитесь, что пользователь ранее предоставил вам проблему с вашим регулярным выражением. Вы должны иметь возможность реализовать эту функцию, если предыдущие пользовательские данные очищены, чтобы избежать каких-либо проблем с разбором регулярных выражений/json. Поскольку это вопрос реализации, мне придется закрыть этот отчет как недействительный. Если вы все еще ищете дополнительную информацию и конкретные советы по реализации этого потока, отправьте сообщение в наш Stack Overflow, где у нас есть инженеры Facebook и широкий круг членов сообщества, которые также вносят свой вклад. http://facebook.stackoverflow.com/ Будьте осторожны и наилучшие пожелания вашему мессенджеру. Отметить

Эта фраза была особенно неясной:

Я знаю, что это немного громоздко, но ответ полезной нагрузки, переданный обратно, не зависит от текста, который был предоставлен в потоке мессенджера.

TLDR; Может ли кто-нибудь сообщить мне, как запретить кнопке регистрировать строку полезной нагрузки, чтобы я мог использовать ее для передачи JSON в свое приложение, чтобы пользователь не видел ее?


person J. Barca    schedule 02.08.2016    source источник


Ответы (2)


Насколько я понимаю, вы говорите, что когда вы нажимаете кнопку, вместо текста кнопки появляется ПОЛЕЗНАЯ НАГРУЗКА.

Вы так определяете свои кнопки?

    {
      type: "postback",
      title: "View Details",
      payload: "details:12345"
    }

Я бы порекомендовал удалить любые специальные символы, которые будут мешать анализу вашей полезной нагрузки. Пока специальные символы не имеют решающего значения для взаимодействия с пользователем, это, вероятно, прекрасное решение.

Если это не решит вашу проблему:

Можете ли вы добавить скриншот, показывающий кнопку, которую вы нажимаете, и сообщение журнала, о котором вы говорите? Насколько я понимаю, вы говорите, что когда вы нажимаете кнопку, вместо текста кнопки появляется ПОЛЕЗНАЯ НАГРУЗКА. У меня это не так, текст моих кнопок появляется, когда я нажимаю кнопку.

person user2322082    schedule 03.08.2016
comment
Странно, похоже текст кнопки ЗАРЕГИСТРИРОВАЛСЯ, а не полезная нагрузка... может быть, я заметил ошибку ранее, которая была исправлена... или, может быть, я просто ошибся, спасибо за подтверждение - person J. Barca; 05.08.2016

Обязательно закомментируйте sendTextMessage() в вызове receivedPostback() :

function receivedPostback(event){
    sendTextMessage(senderID, event.postback.payload);
}
person Zorigt    schedule 24.10.2016