viber-bot-php icon indicating copy to clipboard operation
viber-bot-php copied to clipboard

Remote error: notSubscribed

Open AUDeveloper opened this issue 7 years ago • 6 comments

Доброго времени суток! После того как пользователь отправит первое сообщение, при попытке отправить ответное сообщение возникает, следующая ошибка: exception 'Viber\Api\Exception\ApiException' with message 'Remote error: notSubscribed' in /var/www/html/viber/vendor/bogdaan/viber-bot-php/src/Api/Response.php:37 Stack trace: #0 /var/www/html/viber/vendor/bogdaan/viber-bot-php/src/Client.php(89): Viber\Api\Response::create(Object(GuzzleHttp\Psr7\Response)) #1 /var/www/html/viber/vendor/bogdaan/viber-bot-php/src/Client.php(176): Viber\Client->call('send_message', Array) #2 /var/www/html/viber/bot.php(211): Viber\Client->sendMessage(Object(Viber\Api\Message\Text)) #3 [internal function]: {closure}(Object(Viber\Api\Event\Message)) #4 /var/www/html/viber/vendor/bogdaan/viber-bot-php/src/Bot/Manager.php(83): call_user_func(Object(Closure), Object(Viber\Api\Event\Message)) #5 /var/www/html/viber/vendor/bogdaan/viber-bot-php/src/Bot.php(201): Viber\Bot\Manager->runHandler(Object(Viber\Api\Event\Message)) #6 /var/www/html/viber/bot.php(213): Viber\Bot->run() #7 {main} Мобильный клиент, версия API 1

AUDeveloper avatar Nov 16 '17 17:11 AUDeveloper

See https://developers.viber.com/docs/api/rest-bot-api/#SendingWelcomeMessage

Bogdaan avatar Nov 16 '17 18:11 Bogdaan

При получении conversation_started в ответ возвращаю текст приветствия и ошибок не возникает. Указанная выше ошибка, возникает при попытке отправить пользователю сообщение, когда пользователь пришлет первое сообщение боту: ->onText('|whois .*|si', function ($event) use ($bot, $botSender) { $bot->getClient()->sendMessage( //здесь ошибка (new \Viber\Api\Message\Text()) ->setSender($botSender) ->setReceiver($event->getSender()->getId()) ->setText("I do not know )") ); })

AUDeveloper avatar Nov 17 '17 05:11 AUDeveloper

I am getting same error when trying to send multiples messages at once using foreach loop

foreach ($viberUsers as $vUser) {
        $bot->getClient()->sendMessage(
            (new \Viber\Api\Message\Text())
                ->setSender($botSender)
                ->setReceiver($vUser['ViberID'])
                ->setText($message)
        );
}

bulgariamitko avatar Aug 21 '19 08:08 bulgariamitko

Fatal error: Uncaught Viber\Api\Exception\ApiException: Remote error: notSubscribed не подскажите как можно обойти эту ошибку ? Ошибка заключается в следующем если в массиве все подписаны то тогда все оправляет, а если кто то отписался тогда вот такая ошибка. Вот массивом делаю отправку и он походу стопориться на ошибки когда кто то не подписан, а id остался. foreach ($viberUsers as $vUser) { $bot->getClient()->sendMessage( (new \Viber\Api\Message\Text()) ->setSender($botSender) ->setReceiver($vUser['ViberID']) ->setText($message) ); }

RomanYshko avatar Jul 11 '20 09:07 RomanYshko

@RomanYshko мне кажется в данном случае такая ошибка вполне логична и ожидаема, если действительно получатель отписался от бота, поэтому как вариант можно просто ловить это исключение и удалять соответствующий id.

Я также столкунлся с этой ошибкой (пока) один раз, когда приходит conversation_started и бот не смог отправить первое сообщение.

Возможно, это какой-то баг именно на стороне самого вайбера.

messiahUA avatar Jul 17 '20 10:07 messiahUA

Подскажите, не могу отправить сообщение при событии conversation_started...

$bot = new Bot(['token' => $apiKey]);
    $bot
        ->onConversation(function ($event) use ($bot, $botSender, $log ) {

            $log->info('onConversation ' . var_export($event, true));

            $context = $event->getContext();
            if ($context != "" && $context != null) {
                add_with_referral($event->getSender()->getId(), $event->getSender()->getName(), $context);
            } else {
                add_user($event->getSender()->getId(), $event->getSender()->getName(), $log);
            }

            return (new \Viber\Api\Message\Text)
                ->setSender($botSender)
                ->setText("Can i help you?");
        })

NikitaKobzar avatar Aug 18 '21 18:08 NikitaKobzar