Проигрывание файла во время звонка
Каким образом можно проиграть конкретный файл вызывающей стороне, во время звонка.
Проигрывать надо по схеме, например: два гудка, если трубку не взяли то проигрываем указанный файл, а в этот момент телефон у вызываемой стороны должен звонить (вдруг возьмут трубку), потом снова гудки.
Слышал в каком-то колцентре такое, там говорят: вы такой-то в очереди, хотя не факт что вызов в этот момент идет
пока сделал так:
| Code: |
| exten => XXX,1,Verbose(Звоним) exten => XXX,n,Set(str="") exten => XXX,n,Dial(SIP/${EXTEN},10,tT) exten => XXX,n,AGI(my_script.php,${EXTEN}) exten => XXX,n,Background(${str}) exten => XXX,n,Dial(SIP/${EXTEN},40,tT) exten => XXX,n,HangUp |
но это не очень правильно, потому что в то время, когда работает Background вызов не идет
Натолкните на правильную мысль.
_________________
Успехов!
Расскажу для чего нужно проигрывание файла во время звонка.
Есть пропускная система, в ней регистрируется где сейчас находится человек (н-р: вне предприятия, в отпуске, в кафе-баре, в спорт-зале и т.д.) к астериску прикрутил фестивал, который проговаривает ФИО и где находится человек, и вот хочется чтоб во время звонка это проговаривалось, и одновременно шел вызов, почему:
1. вызов должен идти потому что человек мог не отметится на какой нибуть контрольной точке и тогда информация о его местонахождении будет не верна;
2. если сначала проговаривать, где он находится, а потом делать вызов - это тоже не правильно потому что много времени тратится на прослушивание, также см. п.1;
Может быть и очередь использовать для этих целей, но в очереди можно вызвать конкретного абонента, и если он не ответит то канал должен отбиваться а не идти дальше по очереди? Да и не виду смысла объединять в очередь - директора, секретаря и бухгалтера. ИМХО очереди нужны только во всяких коллцентрах, если ошибаюсь поправьте
_________________
astlock:)
| Code: |
| [macro-whereis] exten => s,1,Set(str="") exten => s,n,Verbose(whereis ${ARG1}) exten => s,n,AGI(wherebyphone.php,${ARG1}) exten => s,n,Background(${str}) [default] exten => s,1,Answer() exten => s,n,Dial(SIP/${EXTEN},40,tTM(whereis^${EXTEN})) |
звоню с телефона А на телефон Б, идут гудки(макрос не выполняется), поднимаю трубку на телефоне Б, в CLI вижу как выполнился макрос, и файл проигрался в трубке телефона Б, а не А, что я делаю не так?
| Quote: |
| M(x[^arg]) - Execute the Macro for the *called* channel before connecting |
Самое просто как уже говорили это использовать Queue вместо Dial.
Либо использовать опцию m(music on hold) в Dial, а вместо музыки использовать свой анонс, к которому скажем приклеить в конце музыку или гудки дозвона(1-2 минуты).
3 вариант, использовать локальные каналы,Bridge,Originate и пробовать как-то все вместе слепить.