Как подключиться по протоколу SIP к поставщику услуг при одиночной регистрации, но с возможностью принятия звонков с более 1 линии. Или «SIP-транк с регистрацией»
От оператора получаем: LoginId, Secret, Registrar.
LoginID – 7-и значный номер в виде 1234567, он и юзернейм для регистрации, и идентификатор линии.
Также в данную регистрацию оператор предоставляет пул номеров: 1234568-1234599
Если произвести регистрацию как для обычной линии:
Register => 1234567:PWD@operator/1234567
то все входящие звонки будут поступать исключительно с индексом 1234567 и обработать в dial plan остальной пул номеров будет не возможно т.к. вызовы будут отбиваться с сообщением fake auth rejected.
На самом деле, это абсолютно верное поведение астериска, так и должно быть (хотя в новых версиях insecure=port,invite позволяет начхать на то, какой там exten прописан в register string)
Во избежание головной боли, приводим строку регистрации в следующий вид:
Register => 1234567:PWD@operator/s [operator] host=_IP Address type=peer defaultuser=1234567 fromuser=1234567 fromdoamin=Registrar secret=_PWD insecure=port,invite context=from-trunk qualify=no
Все входящие звонки будут поступать в контекст from-trunk на обработчик s.
Достанем из SIP_HEADER идентификатор линии:
[from-trunk] exten => s,1,Set(ID=${SIP_HEADER(TO):5:10}) exten => s,2,Set(ID=${CUT(ID,@,1)}) exten => s,3,Goto(${ID},1) exten => 1234567,1,Dial(SIP/111) exten => 1234568,1,Dial(SIP/222) exten => _12345[789]X,1,Queue(internet, 600)
PROFIT!