private EntityReference CreateChat(WebHookRequestBody request) { var newChat = new Entity(EntityNames.Chat); newChat[ChatAttributes.Chat2DeskClientId] = request.ClientId; newChat[ChatAttributes.Chat2DeskOperatorId] = request.OperatorId; newChat[ChatAttributes.ContactId] = GetContact(request.ClientId); newChat[ChatAttributes.OperatorId] = GetSystemUser(request.OperatorId); return(new EntityReference(EntityNames.Chat, _service.Create(newChat))); }
public void ProcessMessage(WebHookRequestBody request) { EntityReference chat = GetChat(request.DialogId); if (chat == null) { chat = CreateChat(request); } CreateMessage(chat, request); }
public void CreateMessage(EntityReference chat, WebHookRequestBody requestBody) { int transport; switch (requestBody.Transport) { case "telegram": transport = Transports.Telegram; break; case "viber": transport = Transports.Viber; break; case "sms": transport = Transports.SMS; break; default: transport = Transports.Other; break; } int type; switch (requestBody.Type) { case "from_client": type = Types.Incoming; break; case "to_client": type = Types.Outgoing; break; default: type = Types.System; break; } var newMessage = new Entity(EntityNames.Message); newMessage[MessageAttributes.Text] = requestBody.Text; newMessage[MessageAttributes.ChatId] = chat; newMessage[MessageAttributes.Direction] = new OptionSetValue(type); newMessage[MessageAttributes.Transport] = new OptionSetValue(transport); newMessage[MessageAttributes.EventTime] = requestBody.EventTime.Date; _service.Create(newMessage); }
// POST: api/WebHook public void Post([FromBody] WebHookRequestBody value) { var crmHelper = new CRM.CrmHelper(); switch (value.HookType) { case "inbox": case "outbox": //Создать сообщение в CRM crmHelper.ProcessMessage(value); //Отобразить сообщение на вебресурсе через SignalR var hubConnection = new HubConnection(_serverUrl); IHubProxy logHubProxy = hubConnection.CreateHubProxy("chat2DeskHub"); hubConnection.Start().Wait(); logHubProxy.Invoke("Send", value.Text, DateTime.Now.ToLocalTime().ToString()); break; } }
// POST: api/WebHook public void Post([FromBody] WebHookRequestBody value) { var crmHelper = new CRM.CrmHelper(); switch (value.HookType) { case "inbox": case "outbox": //Создать сообщение в CRM crmHelper.ProcessMessage(value); //Отобразить сообщение на вебресурсе через SignalR //var hubConnection = new HubConnection("https://79.173.84.161:9998"); //IHubProxy logHubProxy = hubConnection.CreateHubProxy("chat2DeskHub"); //hubConnection.Start().Wait(); //logHubProxy.Invoke("Send", value.Text, // DateTime.Now.ToLocalTime().ToString()); // Get the context for the Pusher hub IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext <LogHub>(); hubContext.Clients.All.addLog(value.Text, DateTime.Now.ToLocalTime().ToString()); break; } }