Актуализация телефонной базы — различия между версиями

Материал из Oktell
Перейти к: навигация, поиск
м (Установка готового проекта в систему)
 
(не показано 13 промежуточных версии этого же участника)
Строка 5: Строка 5:
 
'''Задача:''' Создать задачу для автоматического прозвона и актуализации телефонной базы.  
 
'''Задача:''' Создать задачу для автоматического прозвона и актуализации телефонной базы.  
  
Актуализация телефонной базы требуется в тех случаях, когда у вас есть сырая база и вы хотите предварительно проверить ее на существующие номера.  
+
В данной статье под актуализацией понимается проверка доступности телефонных номеров из некоторой базы клиентов. Такая процедура иногда требуется перед операторским исходящим обзвоном, чтобы исключить неотвечающих и недоступных абонентов. В Oktell это решается через с помощью исходящей IVR задачи.  
  
Самый простой вариант для реализации, если абонент поднял трубку, поставить 1 напротив его номера телефона, как это показано на видео.
 
  
<video type="youtube" id="88CajszDv2c" width="1280" desc="Решаем задачу актуализации телефонной базы - исключаем не отвечающие телефонные номера." frame="false" position="center" size="full" allowfullscreen="false"/>
+
== Создание проекта ==
  
У такого метода есть свои недостатки:
+
В модуле ''Call-центр/Проекты'' нажмите Добавить. Введите название проекта, например, "Актуализация базы".
* Не видно статуса, почему не дозвонился абонента
+
* Не понятно, когда задача закончит обзвон и в каком статусе находится каждый абонент
+
  
В данной статье мы рассмотрим процесс актуализации базы данных, по окончанию которого, у вас будет полный отчет по пройденному процессу.  
+
Нажмите Сохранить.
  
  
== Быстрый старт ==
+
<center>[[Файл:Актуализация БД-001.png| 500px]][[Файл:Актуализация БД-002.png | 500px]]</center>
Чтобы
+
 
+
== Создание проекта ==
+
  
  
 
== Создание таблицы абонентов ==
 
== Создание таблицы абонентов ==
 +
* Перейдите в модуль "Таблицы абонентов".
 +
* Нажмите '''Добавить'''. Введите название списка и название таблицы (только на латинице). В примере, список называется ''База клиентов для актуализации'', таблица называется ''Actualized_Database''.
 +
* Перейдите на вкладку Данные. Добавьте следующие столбцы:
 +
:* Id - номер абонента в списке. Тип '''Int''', назначение Идентификатор создается автоматически.
 +
:* phone - телефон абонента. Тип '''Nvarchar (auto)''', назначение Телефон, <FONT color="green">необходим для задачи</FONT>.
 +
:* CallResult - результат последнего звонка абоненту. Тип '''Nvarchar (auto)'''
 +
:* SipAnswer -  ответ от SIP-провайдера по последней попытке. '''Nvarchar (auto)'''
 +
:* AbonentResult - итоговый результат по абоненту. Тип '''Nvarchar (auto)'''
 +
:* NextEffortTime - время следующей попытки для дозвона. Тип '''Datetime'''
 +
 +
Импортируйте или введите вручную номера для обзвона.
 +
 +
 +
<center>[[Файл:Актуализация БД-003.png | 500px]][[Файл:Актуализация БД-004.png| 500px]]</center>
  
  
 
== IVR сценарий ==
 
== IVR сценарий ==
  
 +
Данный IVR сценарий будет запускаться после ответа абонента. Вообще говоря, для актуализации достаточно только одного факта, что абонент поднимет трубку. Поэтому в IVR сценарии сразу после поднятия трубки, связь будет обрываться.
 +
 +
 +
[[Файл:Актуализация БД-005.png|center]]
 +
 +
 +
Все компоненты имеют свойства по умолчанию. По желанию, вы можете воспроизводить приветствие абоненту или добавить возможность переключения на операторов, например как в статье [[Автоматический_обзвон_абонентов_сценарием_IVR_с_подключением_оператора|Автоматический обзвон абонентов сценарием IVR с подключением оператора]]
  
 
== Служебный сценарий обработки звонка/попытки ==
 
== Служебный сценарий обработки звонка/попытки ==
 +
 +
Сценарий обработки звонка/попытки анализирует проведенный звонок и записывает результат в таблицу БД.
 +
 +
 +
[[Файл:Актуализация БД-006.png|center]]
 +
 +
 +
Компонент "'''1с'''". Пауза в 1 секунду требуется для занесения необходимых данных о звонке в таблицы оперативный статистики, поскольку при большой интенсивности звонков они могут записываться с некоторой задержкой.
 +
* Время задержки, мс - 1000
 +
 +
 +
Компонент "'''Начальные параметры'''". Сохраняет номер абонента в списке, идентификатор задачи, результат звонка (Входной параметр 3) и SIP-ответ от провайдера (Входной параметр 5) в переменные:
 +
* переменной '''CallResult''' (строковая) присваивается значение функции "Входной параметр 3".
 +
* переменной '''SipAnswer''' (строковая) присваивается значение функции "Входной параметр 5".
 +
* переменной '''IdInList''' (строковая) присваивается значение функции "Id абонента в списке"
 +
* переменной '''TaskId''' (строковая) присваивается значение функции "Id задачи"
 +
 +
 +
[[Файл:Актуализация БД-007.png|center]]
 +
 +
 +
Компонент "'''Ув1'''". Отладочное уведомление для вывода найденных параметров
 +
*Текст - выражение
 +
'[CallResult] '+[CallResult]+endline+
 +
'[IdInList] '+[IdInList]+endline+
 +
'[SipAnswer] '+[SipAnswer]+endline+
 +
'[TaskId] '+[TaskId]
 +
*Способ оповещения - всплывающее уведомление
 +
*Ключ получателя - выберите внутренний номер вашего пользователя.
 +
 +
 +
Компонент "'''Запись в БД'''". По номеру абонента в списке и идентификатору задачи определяет статус абонента и время следующей попытки. Затем все найденные параметры записываются в таблицу. Запрос использует таблицу [[Описание_результатов_звонка_из_таблицы_A_Cube_CC_Cat_TaskResultTypes|A_Cube_CC_Cat_TaskResultTypes]] для расшифровки статуса звонка.
 +
 +
<nowiki>
 +
update Actualized_Database
 +
set CallResult=(select top 1 name from oktell_cc_temp.dbo.A_Cube_CC_Cat_TaskResultTypes where id=@callresult),
 +
sipanswer=case when @sipanswer='' then '' else @sipanswer end,
 +
NextEffortTime = (select top 1 NextEffortTime from A_TaskManager_SubTasks where taskid=@taskid and IdInList=@idinlist),
 +
abonentresult = (select top 1 case when nresult=0 then 'В процессе'
 +
  when NResult=1 then 'Успешно завершен'
 +
  when NResult=2 then 'Закончились попытки'
 +
  when NResult=3 then 'Удален из обзвона' end
 +
from A_TaskManager_SubTasks where taskid=@taskid and IdInList=@idinlist)
 +
where id=@idinlist</nowiki>
 +
 +
где
 +
*@callresult - переменная '''CallResult'''
 +
*@idinlist - переменная '''IdInList'''
 +
*@sipanswer - переменная '''SipAnswer'''
 +
*@taskid - переменная '''TaskId'''
 +
 +
 +
[[Файл:Актуализация БД-008.png|center]]
 +
 +
== Создание задачи ==
 +
Создайте исходящую IVR задачу "Актуализация базы".
 +
На вкладке "Параметры" укажите:
 +
*Тип: Исходящая, IVR
 +
*Сценарий IVR - выберите созданный сценарий "Сценарий IVR"
 +
*Расписание задачи - установите время действия задачи, в примере с 10-00 до 18-00
 +
 +
На вкладке "Ресурсы" укажите внешние линии, по которым будет происходить обзвон
 +
 +
<center>[[Файл:Актуализация БД-009.png | 500px]][[Файл:Актуализация БД-010.png| 500px]]</center>
 +
 +
 +
На вкладке "Абоненты" укажите таблицу абонентов "База клиентов для актуализации"
 +
 +
На вкладке "Дополнительно" укажите
 +
* Паузу и количество сигналов при ответе "Занято"
 +
* Паузу и количество сигналов при ответе "Не отвечает".
 +
* Служебный сценарий обработки звонка/попытки - выберите созданный сценарий "Служебный сценарий обработки звонка"
 +
Сохраните задачу и запустите ее.
 +
 +
<center>[[Файл:Актуализация БД-011.png | 500px]][[Файл:Актуализация БД-012.png| 500px]]</center>
  
  
 
== Результаты работы ==
 
== Результаты работы ==
 +
 +
Во время обзвона вы можете в любой момент посмотреть статусы абонентов, определить сколько абонентов находятся в процессе дозвона, какие основные причины недоступности других абонентов.
 +
 +
По завершению задачи в таблице доступные абоненты будут отмечены статусом "Успешно завершен". Абоненты, до которых задача не дозвонилась будут отмечены "Закончились попытки", причину можно посмотреть в столбце с результатом звонка. Если абонент занят, посмотрите на последний SIP-ответ от провайдера — вполне возможно, что этот номер не существует (ответ 404 not found).
 +
 +
[[Файл:Актуализация БД-013.png|center]]
 +
 +
 +
== Установка готового проекта в систему ==
 +
'''1.''' Скачайте и импортируйте проект Call-центра: [[Media:Актуализация_базы.prz|Актуализация базы.prz]] (''собран на версии 2.12.0.150423'')
 +
 +
'''2.''' Вставьте или импортируйте номера телефонов для обзвона в таблицу абонентов "''База клиентов для актуализации''"
 +
 +
'''3.''' Выберите в ресурсах задачи линии для обзвона
 +
 +
'''4.''' Активируйте задачу

Текущая версия на 10:46, 31 марта 2023

Наверх

Задача: Создать задачу для автоматического прозвона и актуализации телефонной базы.

В данной статье под актуализацией понимается проверка доступности телефонных номеров из некоторой базы клиентов. Такая процедура иногда требуется перед операторским исходящим обзвоном, чтобы исключить неотвечающих и недоступных абонентов. В Oktell это решается через с помощью исходящей IVR задачи.


Создание проекта

В модуле Call-центр/Проекты нажмите Добавить. Введите название проекта, например, "Актуализация базы".

Нажмите Сохранить.


Актуализация БД-001.pngАктуализация БД-002.png


Создание таблицы абонентов

  • Перейдите в модуль "Таблицы абонентов".
  • Нажмите Добавить. Введите название списка и название таблицы (только на латинице). В примере, список называется База клиентов для актуализации, таблица называется Actualized_Database.
  • Перейдите на вкладку Данные. Добавьте следующие столбцы:
  • Id - номер абонента в списке. Тип Int, назначение Идентификатор создается автоматически.
  • phone - телефон абонента. Тип Nvarchar (auto), назначение Телефон, необходим для задачи.
  • CallResult - результат последнего звонка абоненту. Тип Nvarchar (auto)
  • SipAnswer - ответ от SIP-провайдера по последней попытке. Nvarchar (auto)
  • AbonentResult - итоговый результат по абоненту. Тип Nvarchar (auto)
  • NextEffortTime - время следующей попытки для дозвона. Тип Datetime

Импортируйте или введите вручную номера для обзвона.


Актуализация БД-003.pngАктуализация БД-004.png


IVR сценарий

Данный IVR сценарий будет запускаться после ответа абонента. Вообще говоря, для актуализации достаточно только одного факта, что абонент поднимет трубку. Поэтому в IVR сценарии сразу после поднятия трубки, связь будет обрываться.


Актуализация БД-005.png


Все компоненты имеют свойства по умолчанию. По желанию, вы можете воспроизводить приветствие абоненту или добавить возможность переключения на операторов, например как в статье Автоматический обзвон абонентов сценарием IVR с подключением оператора

Служебный сценарий обработки звонка/попытки

Сценарий обработки звонка/попытки анализирует проведенный звонок и записывает результат в таблицу БД.


Актуализация БД-006.png


Компонент "". Пауза в 1 секунду требуется для занесения необходимых данных о звонке в таблицы оперативный статистики, поскольку при большой интенсивности звонков они могут записываться с некоторой задержкой.

  • Время задержки, мс - 1000


Компонент "Начальные параметры". Сохраняет номер абонента в списке, идентификатор задачи, результат звонка (Входной параметр 3) и SIP-ответ от провайдера (Входной параметр 5) в переменные:

  • переменной CallResult (строковая) присваивается значение функции "Входной параметр 3".
  • переменной SipAnswer (строковая) присваивается значение функции "Входной параметр 5".
  • переменной IdInList (строковая) присваивается значение функции "Id абонента в списке"
  • переменной TaskId (строковая) присваивается значение функции "Id задачи"


Актуализация БД-007.png


Компонент "Ув1". Отладочное уведомление для вывода найденных параметров

  • Текст - выражение
'[CallResult] '+[CallResult]+endline+
'[IdInList] '+[IdInList]+endline+
'[SipAnswer] '+[SipAnswer]+endline+
'[TaskId] '+[TaskId]
  • Способ оповещения - всплывающее уведомление
  • Ключ получателя - выберите внутренний номер вашего пользователя.


Компонент "Запись в БД". По номеру абонента в списке и идентификатору задачи определяет статус абонента и время следующей попытки. Затем все найденные параметры записываются в таблицу. Запрос использует таблицу A_Cube_CC_Cat_TaskResultTypes для расшифровки статуса звонка.

 update Actualized_Database
 set CallResult=(select top 1 name from oktell_cc_temp.dbo.A_Cube_CC_Cat_TaskResultTypes where id=@callresult), 
 sipanswer=case when @sipanswer='' then '' else @sipanswer end,
 NextEffortTime = (select top 1 NextEffortTime from A_TaskManager_SubTasks where taskid=@taskid and IdInList=@idinlist),
 abonentresult = (select top 1 case when nresult=0 then 'В процессе'
 				   when NResult=1 then 'Успешно завершен'
 				   when NResult=2 then 'Закончились попытки'
 				   when NResult=3 then 'Удален из обзвона' end 
 		from A_TaskManager_SubTasks where taskid=@taskid and IdInList=@idinlist)
 where id=@idinlist

где

  • @callresult - переменная CallResult
  • @idinlist - переменная IdInList
  • @sipanswer - переменная SipAnswer
  • @taskid - переменная TaskId


Актуализация БД-008.png

Создание задачи

Создайте исходящую IVR задачу "Актуализация базы". На вкладке "Параметры" укажите:

  • Тип: Исходящая, IVR
  • Сценарий IVR - выберите созданный сценарий "Сценарий IVR"
  • Расписание задачи - установите время действия задачи, в примере с 10-00 до 18-00

На вкладке "Ресурсы" укажите внешние линии, по которым будет происходить обзвон

Актуализация БД-009.pngАктуализация БД-010.png


На вкладке "Абоненты" укажите таблицу абонентов "База клиентов для актуализации"

На вкладке "Дополнительно" укажите

  • Паузу и количество сигналов при ответе "Занято"
  • Паузу и количество сигналов при ответе "Не отвечает".
  • Служебный сценарий обработки звонка/попытки - выберите созданный сценарий "Служебный сценарий обработки звонка"

Сохраните задачу и запустите ее.

Актуализация БД-011.pngАктуализация БД-012.png


Результаты работы

Во время обзвона вы можете в любой момент посмотреть статусы абонентов, определить сколько абонентов находятся в процессе дозвона, какие основные причины недоступности других абонентов.

По завершению задачи в таблице доступные абоненты будут отмечены статусом "Успешно завершен". Абоненты, до которых задача не дозвонилась будут отмечены "Закончились попытки", причину можно посмотреть в столбце с результатом звонка. Если абонент занят, посмотрите на последний SIP-ответ от провайдера — вполне возможно, что этот номер не существует (ответ 404 not found).

Актуализация БД-013.png


Установка готового проекта в систему

1. Скачайте и импортируйте проект Call-центра: Актуализация базы.prz (собран на версии 2.12.0.150423)

2. Вставьте или импортируйте номера телефонов для обзвона в таблицу абонентов "База клиентов для актуализации"

3. Выберите в ресурсах задачи линии для обзвона

4. Активируйте задачу