XtReLL
@XtReLL

Не работает метод messages.send в VkApi. Бот на полученное сообщение ничего не отправляет. Как решить?

Здравствуйте. Пытаюсь реализовать чат-бота вк, по примеру из документации.
Вот мой код -
<?php

require('../vendor/autoload.php');

$app = new Silex\Application();
$app['debug'] = true;

// Register the monolog logging service
$app->register(new Silex\Provider\MonologServiceProvider(), array(
  'monolog.logfile' => 'php://stderr',
));



// Our web handlers

$app->get('/', function() use($app) {
	return "Hi World";
});

$app->post('/bot', function() use($app) {
	
	
	$data = json_decode(file_get_contents('php://input'));
	
	if(!$data)
		return 'error1';
	
	if($data->secret !== getenv('VK_SECRET_TOKEN') && $data->type !== 'confirmation')
		return 'error1';
	
	switch($data->type) {
		case 'confirmation':
			return getenv('VK_CONFIRMATION_CODE');
			break;
		case 'message_new':
			$request_params = array(
				'user_id' => $data->object->from_id,
				'message' => 'Тест',
				'access_token' => getenv('VK_TOKEN'),
				'v' => '5.92'
			);
			file_get_contents('https://api.vk.com/method/messages.send?' . http_build_query($request_params));
			return 'ok';
			break;
	}
	
	return "error1";
});

$app->run();


Все права выдал, сервер подключился. Хостится сам бота на heroku.

На любое слово, бот должен отправлять "Тест". но ничего не происходит.
  • Вопрос задан
  • 669 просмотров
Решения вопроса 1
inoise
@inoise
Solution Architect, AWS Certified, Serverless
Приятно что меня пригласили экспертом, но с подобными вопросами не сталкивался. Могу посоветовать включить голову и подебажить:
1. работает ли код отправки отдельно?
2. если код отправки работает то правильно ли присылаются VK_TOKEN из окружения и $data->object->from_id тот ли идентификатор пользователя (и в нужном ли формате)?
3. точно ли в $data->type -> 'message_new' ?
4. Приходит ли запрос на /bot?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы