@FedorovAlexey
C# Developer

VK чат-бот не отвечает. В чём может быть проблема?

Написал простого чат-бота на ASP.NET Core. По задумке, бот должен ответить тем же самым сообщением, но ответа нет.
5db7423aa09d8759253250.png
Не могу понять, в чём проблема, т.к. метод Callback успешно отправил подтверждение, но в то же время на сообщения ответа нет.
5db742623cf90570531976.png
Добавил обработку запроса GET, в котором десериализуется одно из отправленных мною сообщений - всё работает. Когда перехожу по адресу контроллера получаю сообщение от группы. В чём может быть проблема?

Код контроллера
[Route("api/[controller]")]
[ApiController]
public class CallbackController : ControllerBase
{
    /// <summary>
    /// Конфигурация приложения
    /// </summary>
    private readonly IConfiguration _configuration;

    private readonly IVkApi _vkApi;

    public CallbackController (IConfiguration configuration, IVkApi vkApi)
    {
        _configuration = configuration;
        _vkApi = vkApi;
    }

    [HttpPost]
    public IActionResult Callback ([FromBody] VkEvent vkEvent)
    {
        // Проверяем, что находится в поле "type" 
        switch (vkEvent.Type)
        {
            // Если это уведомление для подтверждения адреса
            case "confirmation":
                // Отправляем строку для подтверждения 
                return Ok(_configuration["Config:Confirmation"]);
            case "message_new":
                {
                    // Десериализация
                    var msg = Message.FromJson(new VkResponse(vkEvent.Object));

                    // Отправим в ответ полученный от пользователя текст
                    _vkApi.Messages.Send(new MessagesSendParams
                    {
                        RandomId = new DateTime().Millisecond,
                        PeerId = msg.PeerId.Value,
                        Message = string.Format("Vk ChatBot Test App\nYour message: {0}", msg.Text)
                    });
                    // Возвращаем "ok" серверу Callback API
                    return Ok("ok");
                }
        }

        // Возвращаем "ok" серверу Callback API
        return Ok("ok");
    }

    [HttpGet]
    public IActionResult GetActionResult()
    {
        var jsonmsg = @"{""type"":""message_new"",""object"":{""date"":1572209977,""from_id"":19435491,""id"":40,""out"":0,""peer_id"":19435491,""text"":""Hello"",""conversation_message_id"":9,""fwd_messages"":[],""important"":false,""random_id"":0,""attachments"":[],""is_hidden"":false},""group_id"":172942884}";
            

        var vkEvent = JsonConvert.DeserializeObject<VkEvent>(jsonmsg);

        var msg = Message.FromJson(new VkResponse(vkEvent.Object));
        // Отправим в ответ полученный от пользователя текст
        _vkApi.Messages.Send(new MessagesSendParams
        {
            RandomId = new DateTime().Millisecond,
            PeerId = msg.PeerId.Value,
            Message = msg.Text
        });

        return Ok(msg.Text);

    }
}
  • Вопрос задан
  • 78 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
ИнтелКон Москва
от 200 000 до 250 000 руб.
emex.ru Москва
от 160 000 до 190 000 руб.
от 60 000 до 120 000 руб.
17 нояб. 2019, в 00:48
2000 руб./за проект
16 нояб. 2019, в 22:17
500 руб./за проект
16 нояб. 2019, в 22:10
2000 руб./за проект