Скрипт callback для астериск
Необходимо сделать следующий скрипт (язык - на выбор исполнителя).
В БД (mysql) из сторонней системы добавляются записи с Заданиями на выполнение созвона с Клиентом и Оператором. Каждое Задание содержит номер телефона Клиента и один/несколько номеров Операторов.
Скрипт (запускаемый раз в секунду) должен выбрать все необработанные задания и по каждому из них параллельно запустить следующий алгоритм:
1. отметить, что задание взято в работу
2. позвонить первому Оператору; если не дозвонились или оператор не взял трубку (таймаут 7 секунд) - звоним следующему оператору и т.д., в Задании в БД отмечаем причину, по которой не дозвонились до оператора: таймаут/занято/телефон недоступен
делаем циклично 3 попутки созвона с Операторами.
3. как только оператор поднял трубку - нужно начать звонить клиенту и одновременно воспроизвести звуковой файл Оператору (+отметить в БД успешность созвона с Оператором).
Как только соединение с клиентом установлено - в Задании в БД нужно отметить статус созвона с клиентом и текущее время; по окончании разговора с клиентом - сменить статус Задания на "успешный созвон" и проставить длительность разговора, начиная от момента соединения с клиентом.
Также в следующих случаях статус Задания должен меняться:
-если до клиента не дозвонились
-в процессе созвона с клиентом разорвалась связь с Оператором
-произошла ошибка АТС.
Астериск уже установлен и сконфигурирован.