Статья №127
Отправка e-mail и sms в сценарии IVR невозможна, если абонент кладет трубку
Отправлять мыло в сценариях IVR не совсем корректно, хотя и возможно, так как сценарий этого типа служит в общем то для осуществления голосового взаимодействия с абонентом. Именно поэтому сценарий и завершается при положенной трубке. А компонент отправки e-mail писем может работать достаточно долго - в это время в трубке у абонента будет тишина и бездействие полное. Вряд ли какой-либо абонент захочет в тишине ждать 30 секунд (например, при длительном подключении), скорее всего посчитав, что система глюканула, он положит трубку, и прервет работу компонента.То же самое с диалоговыми сценариями. Однако они не прерываются, а лишь приостанавливают общую работу call-центра в случае задержек с отправкой. Так, оператор может быть еще некоторое время считаться занятым в пост-вызывной обработке звонка по задаче в то время как всего лишь не закончена отправка письма в сценарии диалога.Рекомендации по проблеме отправки писем, sms из сценариев IVR.
Вариант 1
Предварительно уведомлять абонента о необходимости нажать для подтверждения какого либо символа. Положенная трубка может означать отказ абонента от уже начавшейся записи. С этой точки зрения это нормальное решение.
Вариант 2
Использовать отложенную отправку. То есть перед записью формировать имя файла, сохранять его (в бд, в глобальной или переносимой переменной), запускать асинхронный служебный сценарий для отправки, в котором в переносимой переменной определяется в какой файл осуществляется запись, присутствует пауза (ожидающая создания файла, то есть со временем чуть большим максимального времени записи). Определить же имя файла можно хитрым способом: поставить предварительный компонент записи, в котором сгенерить имя файла, но длина записи минимально - сотня миллисекунд. В нем же сохранить это имя в переменную, после запустить сценарий служебный с передачей этого имени, а после другой уже реальный компонент записи, который переписывает этот файл (и в нем уже имя не генерится, а берется из той же переменной).
Вариант 3
Не отправлять в IVR. Использовать специальный служебный сценарий, постоянно активный и шныряющий по БД в поисках того, что нужно отправить. Допустим раз в пять минут он смотрит в БД какие файлы не отправлены и отправляет их. Пачкой.
Email, отправка записанного файла, отправка почты, сценарий IVR, отправка прерывается, положил трубку, обрыв работы компонентов, невозможно отправить