Seit langer Zeit hatte ich mal wieder Zeit, mich mit der PBX-Software Asterisk zu beschäftigen. Um mit einem Testsystem starten zu können, fehlte mir jedoch noch ein ordentlicher mit vielen Features ausgestatteter SIP-Zugang. Nach vielen Überlegungen ist meine Wahl auf “Sipgate Team” gefallen. SIP-Trunking, SetCallerID und vieles mehr ist hier möglich. Von daher bin ich sehr optimistisch, was die kommende Umsetzung meiner Ideen in via Asterisk angeht.
Nach dem Kompilieren und Installieren der PBX-Software habe ich mich mit der Konfiguration des SIP-Zugangs auseinandergesetzt. Hier hat sich jedoch ein Fehler in der Dokumentation von Sipgate eingeschlichen. Auf den Supportseiten findet man den Hinweis, dass in der sip.conf von Asterisk die Zugangsdaten wie folgt hinterlegt werden sollen:
Falsch!
register => SIP-ID:SIP-Passwort@sipgate.de/SIP-ID [sipgate.de] type=peer secret=SIP_PASSWORT insecure=invite username=SIP-ID defaultuser=SIP-ID fromuser=SIP-ID context=sipgate_in fromdomain=sipgate.de host=sipgate.de outboundproxy=proxy.live.sipgate.de qualify=yes disallow=all allow=alaw dtmfmode=rfc2833
Mit dieser Konfiguration ist es unmöglich in der Asterisk extenstions.conf eine Extension zu erstellen, in die ein eingehender Anruf laufen soll. Das Problem liegt an der falsch definierten host= Zeile. Der
Asterisk-Server kann so eingehende Anrufe dem entsprechenden Kontext nicht korrekt zuordnen.
Asterisk Fehlermeldung:
Call from '' to extension '123456789' rejected because extension not found.
Wie folgt sieht eine funktionierende Konfiguration aus:
register=SIP-ID@sipgate.de:SIP_PASSWORT@proxy.live.sipgate.de/SIP-ID [sipgate-team.de] type=peer username=SIP-ID fromuser=SIP-ID defaultuser=SIP-ID secret=SIP_PASSWORT host=proxy.live.sipgate.de fromdomain=sipgate.de canreinvite=no insecure=port,invite context=in_sipgate-team
Ich habe diese Konfiguration erfolgreich auf einem 1.6er Asterisk-Server am laufen.
Update 25.05.2010
Und wie immer liegt die Lösung in der goldenen Mitte. Mit der obigen Konfiguration werden ankommende Verbindungen zwar dem richtigen Context zugeordnet, abgehende Gespräche werden von Sipgate jedoch mit
handle_response_invite: Received response: "Forbidden" from ...
abgelehnt. Die korrekte Lösung für Sipgate-Team ist die Erstellung eines Eintrags für ausgehende sowie eingehende Gespräche. Das ganze sieht dann so aus:
register=SIP-ID@sipgate.de:SIP-PASS@proxy.live.sipgate.de/SIP-ID [in_sipgate-team.de] type=peer username=SIP-ID fromuser=SIP-ID defaultuser=SIP-ID secret=SIP-PASS host=proxy.live.sipgate.de fromdomain=sipgate.de canreinvite=no insecure=port,invite context=in_sipgate-team [out_sipgate-team.de] type=peer username=SIP-ID fromuser=SIP-ID defaultuser=SIP-ID secret=SIP-PASS host=sipgate.de fromdomain=sipgate.de outboundproxy=proxy.live.sipgate.de canreinvite=no insecure=port,invite
Eingehende Anrufe landen im Context in_sipgate-team und ausgehende Calls können beispielsweise via
exten => _X.,n,Dial(SIP/${EXTEN}@out_sipgate-team.de)
initiiert werden.