Думаю, некоторые знакомы с библиотеками vk_api.
Весь код был взят с туториала
Выдаёт ошибку:
vk_api.exceptions.ApiError: [100] One of the parameters specified was missing or invalid: random_id is a required parameter
Вот сам код(в значении «token» нужно вставить свой API-ключ):
import vk_api import time vk=vk_api.VkApi(token=»») while True: messages=vk.method(«messages.getConversations»,) if messages[«count»]>=1: body=messages[«items»][0][«last_message»][«text»] if body.lower()==»привет»: vk.method(«messages.send»,) elif body.lower()==»пока»: vk.method(«messages.send»,) else: vk.method(«messages.send»,) time.sleep(1)
_____
Код программы нужно выделять (форматировать) тегами [CODE] [/CODE] (читать FAQ)
Модератор
Последний раз редактировалось Serge_Bliznykov; 25.10.2019 в 20:58 .
Источник: www.programmersforum.ru
Авторизация при отправке API запросов (401 статус, token, authorization заголовок)
Ошибка VK API при рассылке #447
у меня есть скрипт рассылки на nodejs, при запуске ВК отдает ошибку APIError: Code №13 — Runtime error occurred during code invocation: response size is too big, с чем это может быть связано?
The text was updated successfully, but these errors were encountered:
devled-ui commented Aug 10, 2021
я думаю, что нет. на vk.com/dev нашел вот это
Обратите внимание! Существует ограничение на объем ответа. В случае, если данные в ответе занимают больше 5 МБ, вернется ошибка 13 с комментарием «response size is too big».
Источник: github.com
VK Callback API на один запрос много ответов
Пишу на PHP бота для паблика ВК, и вот что происходит, когда пользователь пишет сообщение, появляется событие message_new, и когда отвечает бот, должно появляться message_reply. Но вместо одного message_reply, их приходит очень много. На скриншоте показываю пример. Кто сталкивался с этим, подскажите, в чём может быть причина? Странно что они продолжают приходить спустя много часов даже.
Помимо всего этого, есть еще «Неудавшиеся запросы» И вот ответ сервера, не совсем понимаю где ошибка
HTTP/1.1 200 OK Date: Wed, 29 Mar 2017 02:21:52 GMT Content-Type: text/html; charset=UTF-8 Transfer-Encoding: chunked Connection: keep-alive Server: awex X-Xss-Protection: 1; mode=block X-Content-Type-Options: nosniff X-Request-ID: d8c400366020cfe9e2c0a7ba654ddccb
VK API [PHP Devel Studio] [Урок #5] — РЕШЕНИЕ ОШИБКИ
Ответы (6 шт):
А в теле ответа от сервера вы возвращаете строку ok , как это требуется в документации и показано в официальном примере?
Обратите внимание: после получения уведомления Ваш сервер должен возвращать строку «ok» и статус HTTP 200. Если сервер несколько раз подряд вернет ошибку, Callback API временно перестанет отправлять на него уведомления.
Столкнулся с той же проблемой. Установил код из документации ВК, но он всё равно дублировал ответы. Методом единоразового тыка я решил проблему. Надеюсь, Вам тоже поможет)
$request_params = array( ‘message’ => «Hello, !», ‘user_id’ => $user_id, ‘access_token’ => $token, ‘v’ => ‘5.0’ );
$request_params = array( ‘message’ => «Hello, !», ‘user_id’ => $user_id, ‘access_token’ => $token, ‘read_state’ => 1, ‘v’ => ‘5.0’ );
Мне кажется, это не логично, и такой код не должен решать нашу проблему. Но у меня теперь все отлично)
Точно такая же ошибка была. Долго разбирался, в итоге решение нашлось вот таким способом:
switch ($data->type)
Видимо приходят от api какие-то незадокументированные типы ответов. Короче говоря, default тоже надо обрабатывать.
Корочее. у кого до сих пор не работает, добавьте(см на картинку). Так вот. message_reply приходит когда смс прочитано, но default или else не помогают надо прямо на него указывать, и еще, такие ответы с заголовком и echo нужно после каждого запроса.
На все запросы Callback API нужно отвечать «ОК»
header(«HTTP/1.1 200 OK»); echo ‘OK’;
У меня было такая же проблема из-за того, что «ОК» повторялось дважды (пишу драйвер для botman.io)
Ваш скрипт должен ответить ok и завершится в течение ~2с, иначе вк считает, что запрос не дошел. Если у вас web сервер apache или nginx, то для решения этой проблемы вы можете отправлять вк OK и разрывать соединение, не дожидаясь завершения скрипта. Используйте эту функцию:
public function sendOK() < set_time_limit(0); ini_set(‘display_errors’, ‘Off’); // для Nginx if (is_callable(‘fastcgi_finish_request’)) < session_write_close(); fastcgi_finish_request(); return True; >// для Apache ignore_user_abort(true); ob_start(); header(‘Content-Encoding: none’); header(‘Content-Length: 2’); header(‘Connection: close’); echo ‘ok’; ob_end_flush(); flush(); return True; >
Но у вас написано, Server: awex. Скорее всего вы используете 000.webhost, он слишком долгий и не подходит для ботов, так же вы не сможете воспользоваться функцией выше для отправки ok и принудительного закрытия соединения.
Источник: husl.ru