Последовательный вызов Dial()
Сообщений: 27
|
Последовательный вызов Dial()
после первого вызова Dial() пользователю отправляется ответ о завершении вызова.
можно ли как нибудь избежать этого, для повторной попытки Dial() ?
пробовал с флагами r,e,g, т.е. Dial( peer,,reg ), в результате, после отправки Trying юзер отвечает CANCEL, видимо потому что CallID уже другой.
выражаясь короче, нужен механизм вызова Dial( peer1 & peer2 & peer3 ) но последовательный а не параллельный.
проблема в том, что пиры ограничены по количеству одновременных сессий, и если вызывается Dial( peer1 & peer2 & peer3 ... ) то они все становятся забитыми на время обработки этого вызова.
|
Откуда: Izhevsk
Сообщений: 30
|
Re: Последовательный вызов Dial()
dial(peer1,timeout1,options)
dial(peer2,timeout2,options)
смотрим сюда
|
Откуда: Санкт-Петербург
Сообщений: 931
|
Re: Последовательный вызов Dial()
Флага "е" для версии * 1.4 я не увидел.
r - вообще ни к селу, ни к городу, что называется.
g - ага, вот это прально, если на 1 звонок предполагается порождать 2 последовательных разговора (а не просто посыла вызова)
А так, анализировать CHANISAVAIL (как-то так) и решать, кому звонить или анализировать DIALSTATUS - тоже вариант.
Cancel отправляется, когда вызов действительно "отбивается", неверный call-id тут не при чем.
Создам аварийную ситуацию. Дорого. На долго =)
|
Откуда: Одесса
Сообщений: 186
|
Re: Последовательный вызов Dial()
exten => s,1,Dial(SIP/200&SIP/201&LOCAL/90015300&LOCAL/90015301)
В этом примере, екстеншены 200 и 201 будут звонить сразу же при поступлении вызова, а екстеншены 300 и 301 начнут звонить через 15 секунд после его поступления. После части, содержащей номер "900", следующие две цифры используются для определения задержки, перед тем как начать вызывать екстеншен, который задан в трех последних цифрах указанного номера. Эта уловка служит для того, чтобы вместо простого использования двух команд Dial друг за другом, мы обеспечиваем то, что каждый телефон будет вызываться только один раз. Это предотвращает такие нежелательные последствия, как: a) потенциальные проблемы с SIP устройствами, которым нужно некоторое время, чтобы иметь возможность принять следующий вызов, b) предотвращает появление лишних записей "пропущенных звонков" в интерфейсе телефонного аппарата.
Ra.
|
Сообщений: 1573
|
Re: Последовательный вызов Dial()
exten => s,1,Dial(SIP/200&SIP/201&LOCAL/90015300&LOCAL/90015301)
В этом примере, екстеншены 200 и 201 будут звонить сразу же при поступлении вызова, а екстеншены 300 и 301 начнут звонить через 15 секунд после его поступления. После части, содержащей номер "900", следующие две цифры используются для определения задержки, перед тем как начать вызывать екстеншен, который задан в трех последних цифрах указанного номера. Эта уловка служит для того, чтобы вместо простого использования двух команд Dial друг за другом, мы обеспечиваем то, что каждый телефон будет вызываться только один раз. Это предотвращает такие нежелательные последствия, как: a) потенциальные проблемы с SIP устройствами, которым нужно некоторое время, чтобы иметь возможность принять следующий вызов, b) предотвращает появление лишних записей "пропущенных звонков" в интерфейсе телефонного аппарата.
только вот это забыли:
exten => _900XXXXX,1,Wait(${EXTEN:4:2})
exten => _900XXXXX,2,Dial(SIP/${EXTEN:5})
|
Сообщений: 27
|
Re: Последовательный вызов Dial()
сам алгоритм последовательного вызова Dial() у меня есть и он работает на 5+
палки в колёса ставит ответ который отправляется пользователю после первого Dial() если он был неуспешным.
Ведь при параллельном вызове Dial( peer1 & peer2 & peer3 ) юзер не получает ответы от всех пиров, а получает лишь один единственный, который первым ответит.
Похоже что идею можно похоронить.
|
Сообщений: 1573
|
Re: Последовательный вызов Dial()
audial: палки в колёса ставит ответ который отправляется пользователю после первого Dial() если он был неуспешным.
О каком ответе речь? И какому пользователю?
Что вы хотите получить?
|
Откуда: Санкт-Петербург
Сообщений: 931
|
Re: Последовательный вызов Dial()
Ога :) Уж объясните гостям, кого хороним?
Создам аварийную ситуацию. Дорого. На долго =)
|
Откуда: Санкт-Петербург
Сообщений: 541
|
Re: Последовательный вызов Dial()
перебор пиров c ограничение числа вызовов через каждого можно делать через
Set(GROUP()),CHECK_GROUP
пример - http://www.voip-info.org/wiki/view/Asterisk+cmd+SetGroup
|
|