Mehrere Accounts - gleicher SIP Provider

Guten Tag,

ich habe folgendes Problem. In der MD 7.11.03 habe ich bei den Ämtern ein Manuelles SIP Amt mit 2 Accounts angelegt. Beide Accounts haben einen eigenen Benutzer und ein eigenes Kennwort. Der Host ist bei beiden der selbe.
Was mache ich falsch wenn alle eingehenden Anrufe immer über den selben Account gehen? Ich kann dann zwar mit den Rufregeln mittels “Ziel” den Anruf steuern aber so ist das nicht gewollt.
Beim SIP Debug kommt immer Found peer ‘mdc_trunk_conf-1’ for ‘xxxxxx’ from xxx.xxx.xxx.xxx:5060 obwohlt es z.B über mdc_trunk_conf-3 gehen sollte.

Vielen Dank für eure Hilfe!

Gruß
Mirko

Hi,

schau dir hierzu vielleicht mal die SIP Optionen

;insecure=port ; Allow matching of peer by IP address without
; matching port number
;insecure=invite ; Do not require authentication of incoming INVITEs
;insecure=port,invite ; (both)

an.

Weiter kannst du mit SIPGREP auf der CLI dir den SIP Traffic anschauen.

Gruß
Markus

Hallo Markus,

ich habe bei einem Provider 2 Accounts mit jeweils 1 Telefonnummer. Wenn ich zb. vom Mobiltelefon die Nummer1 wähle welche an username1 gekoppelt ist dann erhalte ich folgendes:

INVITE sip:username1@IP_MOBYDICK:5060 SIP/2.0

To: <sip:NUMMER1@provider.xx>

Wenn ich vom Mobiltelefon die Nummer2 wähle welche an username2 gekoppelt ist dann erhalte ich folgendes:

INVITE sip:username2@IP_MOBYDICK:5060 SIP/2.0

To: <sip:NUMMER2@provider.xx>

Es kommen also beide Nummern an. Was aber komisch ist, dass immer der erste Eintrag im mdc_sip_trunk.conf verwendet wird und somit auch der falsche context verwendet wird.

Gruß
Mirko

Hi,

nimm mal zum Test die Option “insecure” raus.

Gruß
Markus

Hallo Zusammen,

ich habe genau das gleiche Problem wie gumpix (zwei SIP bei TK-Lindau)
Eingehende Rufe die über mdc_trunk_conf-24… gehen sollten, gehen über mdc_trunk_conf-26… und werden mir mit folgendem Fehler quitiert.

WARNING[5737][C-0000008e]: pbx.c:6643 __ast_pbx_run: Channel ‘SIP/mdc_trunk_conf-26-00000123’ sent to invalid extension but no invalid handler: context,exten,priority=mdc_mapping-21,xxxxxxxxx,1

Viele Grüße
Jan

7.12.01

Re,

das müsste funktionieren. Die Idee besteht darin, dass wir für alle Ämter den gleichen eingehenden Kontext verwenden und dort dann auf den richtigen Kontext des Amtes aufgrund der gewählten Rufnummer (callee) verzweigen.

  1. Ermitteln des aktuellen Kontextes des Amtes mittels "SIP SHOW PEER mdc_trunk-conf-…, oder über die mdc_extensions.conf

  2. Das Skript für den gemeinsamen Einstieg anlegen um zu verteilen. Hierzu brauchen wir den von 1) ermittelten Kontext. Beim jeweiligen GoToIf ersetzen.

Über Erweitert->Skripte bitte ein Skript anlegen, Bezeichnung, Kontext = “allin”, einbinden =“NEIN” als Inhalt

exten => _X.,1,NoOp(allin: ${EXTEN:0:3})
; hier weiter zu trunk XY aufgrund der ersten 3 stellen der gewählten Rufnummer
same => n,GoToIf($ “${EXTEN:0:3}” = “089” ]?mdc_incoming-1,${EXTEN},1)
; hier weiter zu trunk AB
same => n,GoToIf($ “${EXTEN:0:3}” = “030” ]?mdc_incoming-2,${EXTEN},1)
; fallback auf AB
same => n,GoTo(mdc_incoming-2,${EXTEN},1)

  1. wir ändern den Einstiegs-Kontext für jedes Amt ab. Hierzu im Amt unter den SIP Optionen “context=allin” eintragen

  2. Telefonie anwenden und testen.

Gruß
Markus

Hallo Markus,

vielen Dank für die Antwort.
Ich steig nicht durch.

Derzeit wird alles über mdc_trunk_conf-26 abgewickelt

Ich muss ja auf die komplette Nummer prüfen nicht nur auf die ersten 3 Stellen?!

exten => _X.,1,NoOp(allin: ${EXTEN})

same => n,GoToIf($ “${EXTEN}” = “0123123456789” ]?mdc_trunk_conf-24,${EXTEN},1)
same => n,GoToIf($ “${EXTEN}” = “0123987654321” ]?mdc_trunk_conf-25,${EXTEN},1)
same => n,GoToIf($ “${EXTEN}” = “0123123450987” ]?mdc_trunk_conf-26,${EXTEN},1)
same => n,GoToIf($ “${EXTEN}” = “0123987612345” ]?mdc_trunk_conf-27,${EXTEN},1)

So habe ich es probiert, leider ohne Erfolg.
Leider komme ich mit der Syntax nicht klar.

Vielen Dank für die Hilfe
Jan

Hallo Jan,

solltest du für beide Accounts keine separaten eingehende Präfixe benötigen, so ist der leichteste Weg beide Accounts in das selbe Amt zu legen. Bei den ausgehenden Rufen muss dann nur darauf geachtet werden immer den richtigen Account anzugeben (ganz rechts). Dann kann man sich das Dialplanscript sparen.

Ansonsten über den Ansatz von Markus hast du auch die Möglichkeit teile der Rufnummer zu prüfen, hier ein Beispiel anhand der Ortsvorwahl:

exten => _.,1,NoOp(my-sip-provider-allin: ${EXTEN} - ${EXTEN:0:3})
same => n,GoToIf( $ “${EXTEN:0:3}” = “089” ]?mdc_incoming-9,${EXTEN},1)
same => n,GoToIf( $ “${EXTEN:0:3}” = “040” ]?mdc_incoming-11,${EXTEN},1)
same => n,NoOp(>>>Fallback)
same => n,GoTo(mdc_incoming-9,${EXTEN},1)

0 bedeuteut hier beggine bei dem ersten Zeichen und 3 für 3 Zeichen ab hier. Das lässt sich natürlich verschieben. mdc_incoming-X ist der jeweilige kontext, den man im Dialplan (/etc/asterisk/mdc_extensions.conf) nachlesen muss.
Das Skript legt man dann als Dialplan Script Kontext my-sip-provider-allin einbinden: nein an.
In den Ämtern muss man dann bei den Accounts noch context=my-sip-provider-allin bei den SIP Optionen mit anfügen.

Hoffe das hilft etwas,
wie erwähnt würde ich ersteren Weg beide Accounts in ein Amt zu legen emfehlen, dann muss man sich mit der Asterisk Syntax nicht ägern.

Grüße,
Steve