@tmtm653

Как правильно сделать «Webhook»?

Мне необходимо приложение "WinForm" для переписки в viber.
"Webhook" планируется для получения данных(событий) из viber, далее полученные данные будут использоваться в приложении "WinForm".

Я сделал:
  1. создал проект "Веб приложение ASP.NET (.NET Framework)";
  2. выбрал шаблон - "Пустой" + "MVC" + "API";
  3. добавил котроллер "Контроллер MVC 5 - пустой". Имя контроллера "HookController";
  4. запускаю приложение "Postman";
  5. "Postman". устанавливаю запрос "POST" ;
  6. "Postman". устанавливаю ссылку "localhost:44836/Hook";
  7. "Postman". Нажимаю "SEND";
  8. Результат см. картинку "-= RESULT =-";

Если я правильно понял теорию, то после выполнения действия "Postman". Нажимаю "SEND", в котроллере HookController.cs должен выполняться метод ViberProcess(HttpContext context) и код должен остановиться в точке останова.
Этого не происходит.

Документация Viber REST API - ссылка

Вопрос.
Как правильно сделать "Webhook"?

Код HookController.cs
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;

using System.Web;
using System.Web.Mvc;

//
using System.Runtime.Remoting.Contexts;

namespace WebAppl1.Controllers
{
    public class HookController : Controller
    {
        // GET: Hook
        //public ActionResult Index()
        //{
        //    return View();
        //}

         [HttpPost]
        // [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public void ViberProcess(HttpContext context)
        {
            try
            {
                Stream s = context.Request.InputStream;
                // Stream s = Context.Request.InputStream;
                // or  Stream s  =  HttpContext.Current.Request.InputStream;
                s.Position = 0;
                StreamReader reader = new StreamReader(s);
                string jsonText = reader.ReadToEnd();

                // Other code that converts json text to classes
            }
            catch (Exception e)
            {
                // .....
            }
        }

    }

}


5d1b02fbbbc03379840098.jpeg

7. "Postman". Click "SEND";
5d1b030c3c16b211008424.png

8. The result, see the picture "- = RESULT = -";
5d1b031992cea605684353.png
  • Вопрос задан
  • 2599 просмотров
Решения вопроса 1
petermzg
@petermzg
Самый лучший программист
У вас должен быть роутинг в ASP.NET приложении прописан.
Как правило по умолчанию там "Имя контроллера"/['index']
где index подставляется как дефолтное значение.
app.UseMvc(routes => {
      routes.MapRoute("default",
                    "{controller}/{action}",
                     new { controller = "Home", action = "Index" });
});


Отсюда следует, что отправит запрос на localhost:44836/Hook
ищется контроллер HookController и Index метод, что отмечен [HttpPost]
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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