Прием и обработка обращений Клиента

После настройки каналов коммуникации в МД, вы сможете получать сообщения от Клиентов и отвечать на них. На рисунке ниже описан процесс приема и обработки сообщений Клиента, указано в какой момент в МД создается обращение и как оно переходит в работу к оператору.

Рисунок 6 – Диаграмма взаимодействия при обработке обращений Клиента

  1. Когда Клиент отправил первое сообщение, выполняются следующие действия:
  • в МД создается новая сессия в статусе "pending" - ожидает распределения на оператора;

Примечание. Посмотреть информацию о созданной сессии вы можете при помощи запроса "Получить список активных сессий (/cc/md/sessions)".

  • МД отправляет во внешнюю систему вебхук "Новое сообщение в чате (/events/cc/md/session/chat/on_message/)", включающий в себя:
{
            "vpbx_api_key": "123qwrty",
            "sign": "456qwerty",
            "json": {
                "id": "7e42",
                "session_id": "ffqm",
                "chat_id": "729d",
                "message": {
                    "message_id": "4442",
                    "time": 1719217299148,
                    "direction": "incoming",
                    "client_id": "558a",
                    "payload": {
                        "type": "text",
                        "text": "Привет!"
                    }
                }
            }
        }
        
  • МД отправляет во внешнюю систему вебхук "Сессия в состоянии ожидания", включающий в себя:
{
            "vpbx_api_key": "123qwerty",
            "sign": "456qwerty",
            "json": {
                "session": {
                    "session_id": "ffqm",
                    "widget": {
                        "widget_id": 1757,
                        "name": "Мой виджет МД",
                        "enabled": true,
                        "channels": [
                            {
                                "channel_id": 8020,
                                "type": 2,
                                "mode": "abonent",
                                "abonent_id": 3002
                            }
                        ]
                    },
                    "update_time": 1719220320372,
                    "state": "pending",
                    "variables": {
                        "social_user": {
                            "social_user_id": "x8Nt"
                        }
                    }
                },
                "id": "04b3"
            }
        }
        
  1. когда оператор внешней системы берет обращение в работу, от внешней системы к МД должен поступить запрос "Взять сессию в работу (/cc/md/session/take)", включающий в себя:
{
            "vpbx_api_key": "123qerty",
            "sign": "456qwerty",
            "json": {
                "id": "fc30",
                "session_id": "ffqm",
                "abonent_id": 3002
            }
        }
        
  1. получив запрос о взятии сессии в работу, МД присвоит этой сессии статус "dialog" - передана в работу оператору. Затем от МД к внешней системе будет отправлен:
  • результат обработки запроса с кодом 200 ОК. Пример результата:
{
            "name": "OK",
            "status": 200,
            "code": 1000
        }
        
  • вебхук "Сессия взята в работу (/events/cc/md/session/on_dialog)", включающий в себя:
{
            "vpbx_api_key": "123qwerty",
            "sign": "456qwerty",
            "json": {
                "session": {
                    "session_id": "ffqm",
                    "widget": {
                        "widget_id": 1757,
                        "name": "Мой виджет МД",
                        "enabled": true,
                        "channels": [
                            {
                                "channel_id": 8020,
                                "type": 2,
                                "mode": "abonent",
                                "abonent_id": 3002
                            }
                        ]
                    },
                    "update_time": 1719,
                    "state": "dialog",
                    "variables": {
                        "social_user": {
                            "social_user_id": "x8Nt"
                        }
                    },
                    "group_id": null,
                    "abonent_id": 3002,
                    "chat": {
                        "chat_id": "729d",
                        "client_id": "558a"
                    }
                },
                "id": "c37f"
            }
        }
        
  1. когда оператор сформирует и отправит ответ Клиенту, от внешней системы к МД необходимо отправить запрос "Отправить сообщение оператора к клиенту (/cc/md/session/chat/send_message)", включающий в себя:
{
            "id": "c603",
            "chat_id": "729d",
            "abonent_id": 3002,
            "local_message_id": "1678",
            "payload": {
                "type": "text",
                "text": "Привет, наш новый Клиент!"
            }
        }
        
  1. МД выполнит следующие действия:
  • отобразит ответ оператора Клиенту в диалоге оператор с Клиентом (в канале коммуникаций);
  • от МД к внешней системе будут отправлены:
  • результат обработки запроса с кодом 200 ОК. Пример результата:
{
            "name": "OK",
            "status": 200,
            "code": 1000
        }
        
  • вебхук "Новое сообщение в чате (/events/cc/md/session/chat/on_message/)", который включает в себя:
{
            "vpbx_api_key": "123qwerty",
            "sign": "456qwerty",
            "json": {
                "id": "b649",
                "session_id": "ffqm",
                "chat_id": "729d",
                "message": {
                    "message_id": "4442",
                    "time": 1719,
                    "direction": "outgoing",
                    "abonent_id": "3002",
                    "payload": {
                        "type": "text",
                        "text": "Привет, наш новый Клиент!"
                    }
                }
            }
        }
        
  • вебхук "Сообщение оператора доставлено клиенту (/events/cc/md/session/on_recv_message)", включающий в себя:
{
            "vpbx_api_key": "123qwerty",
            "sign": "456qwerty",
            "json": {
                "id": "9277",
                "chat_id": "729d",
                "abonent_id": "3002",
                "message_id": "4442"
            }
        }
        
  • вебхук "Сообщение оператора прочитано клиентом (/events/cc/md/session/on_read_message)", включающий в себя:
{
            "vpbx_api_key": "123qwerty",
            "sign": "456qwerty",
            "json": {
                "id": "bdd5",
                "chat_id": "729d",
                "abonent_id": "3002",
                "message_id": "4442"
            }
        }
        
  1. Когда Клиент набирает вам второе и последующее сообщение, МД отправляет к внешней системе вебхук "Клиент печатает (/events/cc/md/session/chat/on_typing)", включающий в себя:
{
            "vpbx_api_key": "123qwerty",
            "sign": "456qwrty",
            "json": {
                "chat_id": "729d",
                "client_id": "558a",
                "typing": true,
                "id": "e918"
            }
        }
        
  1. когда Клиент отправит вам второе и последующее сообщение, от МД к внешней системе будет отправлен вебхук "Новое сообщение в чате" (/events/cc/md/session/chat/on_message/), включающий в себя:
{
            "vpbx_api_key": "123qwerty",
            "sign": "456qwerty",
            "json": {
                "id": "e528",
                "session_id": "ffqm",
                "chat_id": "729d",
                "message": {
                    "message_id": "4442",
                    "time": 1719223490589,
                    "direction": "incoming",
                    "client_id": "558a",
                    "payload": {
                        "type": "text",
                        "text": "мое второе сообщение"
                    }
                }
            }
        }
        

Диалог Клиента с оператором продолжается до тех пор, пока Клиент или оператор не перестанут отправлять сообщения в течение определенного в настройках МД времени или до тех пор, пока ваш оператор не закроет обращение при помощи запроса "Закрыть сессию (/cc/md/session/close)".