Сообщение Facebook Instant Game Bot часто приводит к тому, что в настоящее время невозможно отправить пользователю сообщение Instant Game.

Я делаю мгновенную игру на 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», и что он действительно иногда работает:

введите здесь описание изображения

введите здесь описание изображения


person Bemmu    schedule 24.03.2018    source источник


Ответы (1)


Мы позаботились о том, чтобы эта ошибка была задокументирована.

Это сообщение указывает на то, что количество сообщений или временной интервал, в течение которого сообщения отправляются пользователю Instant Game, превышает политику бота Instant Games.

Это относится как к разработчикам и администраторам, так и к пользователям приложения. Играя в игру или общаясь с ботом, эти ограничения должны быть сброшены.

person Chris Hawkins    schedule 25.03.2018
comment
Привет, Крис :) Вы говорите, что игра или общение с ботом должны сбросить эти ограничения. Что делать, если прошло 10 дней с последней игровой сессии (без активности пользователя)?? Могу ли я начать отправлять пользователя снова, или ЕДИНСТВЕННЫЙ способ реактивировать бота - это снова играть?? Я имею в виду, действует ли бот как электронная почта, где вы можете, например, ежемесячно привлекать пользователя. - person Michael Samuel; 11.03.2019
comment
Привет Михаил, это правильно. Через 10 дней вы можете отправить сообщение этому пользователю только в том случае, если он снова сыграет в игру или поговорит с ботом. - person Chris Hawkins; 12.03.2019
comment
Большое спасибо, Крис, за быстрый ответ :) - person Michael Samuel; 12.03.2019