Пример #1
0
        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)));
        }
Пример #2
0
        public void ProcessMessage(WebHookRequestBody request)
        {
            EntityReference chat = GetChat(request.DialogId);

            if (chat == null)
            {
                chat = CreateChat(request);
            }

            CreateMessage(chat, request);
        }
Пример #3
0
        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;
            }
        }