VoIP: Mehrere Rufnummern

Hallo,
ich habe aktuell noch das ISDN Modul mit IP-Symcon Version 3 in Betrieb.
Solangsam plane ich allerdings, doch mal umzusteigen und überlege mir natürlich eine mögliche neue Umsetzung mittels VoIP Modul.

Derzeit nutze ich ca. 20 unterschiedliche MSN, welche entsprechend Funktionen auslösen.
So z.B.
123: Licht am Schreibtisch an
124: Rolladen auf/zu/stop
125: Haustür auf

Gibt es eine Möglichkeit auf mehrere Rufnummern zu reagieren, ohne 20 Instanzen VoIP Modul anzulegen? Könnte mir z.B. eine Art Rufumleitung vorstellen, welche dann über den SIP Header „ursprüngliches Ziel“ die eigentliche Nummer auswertet.
Oder alternativ SIP Trunk?

Falls nein: Ist das Modul so ausgelegt, dass dies problemlos funktioniert, oder wird das den Rechner (Futro S90 Thinclient, 1,2GHz single Core) überlasten?

Das Modul reagiert auf alle Rufnummern die beim Modul ankommen. Das hängt also von deiner TK Anlage ab. Im Skript kannst du dann auch je nach Nummer differenzieren.

paresy

Hallo,
leider finde ich nicht den passenden Datenpunkt, der mir die gerufene Nummer anzeigt.

$_IPS = 
(
    [SELF] => 42647
    [EVENT] => DTMF
    [THREAD] => 2
    [DATA] => 5
    [CONNECTION] => 2
    [INSTANCE] => 41481
    [SENDER] => VoIP
)
VoIP_GetConnection = 
(
    [ID] => 2
    [TimeStamp] => 1591190560
    [Number] => sip:259@192.168.102.1;user=phone
    [Direction] => 0
    [Connected] => 1
    [Disconnected] => 
)

Was mir jetzt fehlt, ist das Äquivalent zu ISDN_GetConnectionInfo[‚CalledNumber‘]
Zudem hätte es mir viel Sucherei und anfängliche Enttäuschung gespart, wenn die Existenz von VoIP_AcceptCall dokumentiert wäre. Vielleicht könnt ihr das noch nachholen.

Aus welchem SIP Header kommt denn die Information „CalledNumber“ die ihr auswertet? Dann kann ich das schonmal versuchen nachzustellen.

Du meinst das hier: VoIP_GetConnection — IP-Symcon :: Automatisierungssoftware

AccepCall und RejectCall kommen erst zur 5.4. Die Doku sollte aber tatsächlich schon da sein weil wir kurz vor dem Release stehen. Ich prüfe das.

paresy

Hallo,

den Status von VoIP_GetConnection hatte ich ja bereits angehangen. Dort fehlt aber CalledNumber. So kann ich natürlich nicht unterscheiden, für welche Rufnummer der Anruf ist. Ich verwende die aktuelle Beta.

Zur Doku: Wäre es vielleicht mittelfristig eine Option, die Onlinedoku z.B. an den Foren Account zu knüpfen und hierin auch schon mit dickem Hinweis die Beta Funktionen anzuzeigen?

Aber du hast oben dann doch korrekt die „Number“ gepostet. Dort ist ja deine Endstelle hinter dem sip: kodiert, oder?

paresy

Number ist MEIN Telefon. Also CALLING Number (A-Teilnehmer). Was ich (zusätzlich) möchte: CALLED Number (B-Teilnehmer).

Jetzt hat es klick gemacht. Ich schau mal was sich da machen lässt :wink:

paresy

1 „Gefällt mir“

@paresy
ich hätte da in Verbindung mit Wildcard Teilnehmern (Lancom SIP-Benutzer mit # im Namen) bzw. generell SIP-Trunk-Leitungen (Asterisk) weiterhin Bedarf. Ich nutze in einer Installation ~20 interne Nummern für alle möglichen Schaltaufgaben, kann aber im Router nur insgesamt 10 Teilnehmer anlegen.

Für mich steht die Frage im Raum: Baue ich ein rudimentäres SIP über UDP Modul nach, oder kann ich bis ~Jahresende? mit der einen Zeile aus dem SIP Header rechnen?

@paresy habt ihr das Thema (dürfte ja eigentlich nur aus sehr wenigen Zeilen Code Anpassung bestehen: Den TO-Header mit ins Array packen) auf dem Schirm, oder soll ich mir z.B. sowas ansehen: GitHub - rtckit/php-sip: ☎ SIP Parsing/Rendering Library for PHP bzw. es tatsächlich selbst implementieren?

@paresy: Bevor ich kommend meinen Urlaub in der schönen Jahreszeit dafür Opfer, wäre ich schon an einer verbindlichen Aussage interessiert: plant ihr den TO-Header mit auszuliefern oder nicht? Offenbar packt ihr in Verbindung mit dem Zauberwort ‚Türsprechstelle‘ sowieso die VoIP Implementierung an?

Ich hab den Befehl/das Feld gefunden. Bei uns heißt aktuell die ausgehende/eingehende Nummer (also die vom Gegenüber) Number. Intern heißt es aber PeerURI. Das passende Gegenstück heißt LocalURI. Hast du einen Vorschlag, wie das Feld in VoIP_GetConnection heißen sollte? Wenn wir da etwas gutes finden, dann kann ich das bestimmt einbauen.

paresy

1 „Gefällt mir“

CalledNumber und extension (angelehnt an Asterisk) wären jeweils der B-Teilnehmer (also das Ziel). Da ihr aber historisch jetzt immer Number für den Partner habt, wären das schonmal keine guten Namen.

LocalURI finde ich garnicht so schlecht. Vorallem weil ihr ja auch tatsächlich die URI mitgebt und nicht nur die Number.

Ich habe das mal zum Anlass genommen bei gleich mehreren entsprechenden Installationen die Subscription zu verlängern.

Siehst du eine Umsetzung eher in ~2 Wochen oder 3-4 Monaten für realisierbar?

Kommt zum nächsten Beta der 8.0. Heißt dann Local das neue Feld.

paresy

Erster Test mit Asterisk [Nachtrag, der funktioniert :smiley: ]

exten => 280,1,Dial(SIP/I288!280,60,Tt)

Symcon ist nur als I288 registriert, bekommt jetzt aber auch Nummern auf die 280 mit.

Zweiter Test mit Lancom und # im Usernamen bisher nicht erfolgreich.
@paresy: gibt es eine Möglichkeit ohne Wireshark die VoIP Instanz zu debuggen? SIP Pakete anzuzeigen, o.ä?

Das ist nicht unser Problem, wenn dein Asterisk uns zu viel sendet :wink:

Was steht in Local der IPS_GetConnection?

paresy

Test eins mit Asterisk ist doch ERFOLGREICH gewesen. genau das, was ich immer wollte. Ich kann jetzt (über das ! hinter dem Zielgerät, die Zielnummer manipulieren).

Mein Problem ist der Lancom, wo ich überhaupt nichts in Symcon sehe. Das kann natürlich daran liegen, dass der Lancom nichts sendet. Aber ich würde halt gerne auch die Symcon Seite beobachten.

Nachtrag: Ich glaube ich habe den Unterschied verstanden:

  • Im Lancom ist ein Teilnehmer 7777# eingerichtet
  • Rufe ich jetzt 77770666661

Sending datagram (875 Bytes) from 192.168.102.1:5060 to 192.168.102.6:5060 using UDP (RtgTag 0):
INVITE sip:7777770666661@192.168.102.6:5060;transport=UDP SIP/2.0\r\n
Via: SIP/2.0/UDP 192.168.102.1:5060;branch=z9hG4bK-4dfbca52-6f01415a;rport\r\n
From: "Tobias"sip:**02312345@192.168.102.1;tag=-1258922261–1570268060\r\n
To: sip:7777770666661@192.168.102.1;user=phone\r\n
Call-ID: 1665534080@00a05746cb3b\r\n
CSeq: 1 INVITE\r\n
Max-Forwards: 70\r\n
User-Agent: LANCOM 1793VA-4G 10.50.1400\r\n
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, REGISTER, PRACK\r\n
Supported: timer\r\n
Contact: sip:**02312345@192.168.102.1:5060;transport=UDP\r\n
Date: Fri, 16 Aug 2024 13:43:19 GMT\r\n
Content-Type: application/sdp\r\n
Content-Length: 230\r\n
\r\n

Ah - das kam nicht rüber, dass es mit dem Asterisk funktioniert.

Du müsstest leider mit Wireshark nachsehen, da wir nicht wirklich Debug Logs für dieses Thema haben. Müsste ja alles auf Port 5060 laufen :slight_smile:

Sollte übrigens sauber auf unseren Regex matchen: regex101: build, test, and debug regex

paresy