Я делаю мгновенную игру на Facebook и отправляю себе тестовые сообщения через соответствующего бота.
Это работает. Но не всегда, почему?
Очень часто я получаю это:
{
"error": {
"message": "(#100) Cannot send Instant Game message to user at this time.",
"type": "OAuthException",
"code": 100,
"error_subcode": 2018144,
"fbtrace_id": "DNZhKZlP83D"
}
}
Этот код ошибки не указан в документации по кодам ошибок< /а>.
Я предполагаю, что это может быть какое-то ограничение на отправку сообщений, но я предполагаю, что как указанный разработчик приложения я буду освобожден от любых ограничений.
Подробнее на всякий случай
Я подписался на веб-перехватчики и создал страницу, связанную с моим приложением для мгновенной игры, и имею для нее токен доступа. Пользователь, которому я пытаюсь отправить сообщение, — это я, указанный как разработчик.
Когда я получаю событие game_play, такое как:
{
"object": "page",
"entry": [{
"id": "189899011738553",
"time": 1521899151513,
"messaging": [{
"recipient": {
"id": "189899011738553"
},
"timestamp": 1521899151513,
"sender": {
"id": "1647209385355472"
},
"game_play": {
"game_id": "176650212970169",
"player_id": "1293384810761815"
}
}]
}]
}
Я нахожу идентификатор отправителя и отправляю ответ следующим образом:
{
"message": {
"attachment": {
"type": "template",
"payload": {
"template_type": "generic",
"elements": [{
"buttons": [{
"type": "game_play",
"title": "Play"
}],
"title": "Hello World"
}]
}
}
},
"recipient": {
"id": "1647209385355472"
}
}
Вот версия cURL:
curl -X POST \
'https://graph.facebook.com/me/messages?access_token=MY_ACCESS_TOKEN' \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/json' \
-d '{"message": {"attachment": {"type": "template", "payload": {"template_type": "generic", "elements": [{"buttons": [{"type": "game_play", "title": "HELLO"}], "title": "HELLO WORLD"}]}}}, "recipient": {"id": "1647209385355472"}}'
И просто показать, что токен доступа действителен, несмотря на «OAuthException», и что он действительно иногда работает: