Fallback SIP Trunk aktuell (easybell)

Hi,

gibt es aktuell eine Möglichkeit einen Fallback bei Überschreiten der Sprachkanäle oder dem Ausfall eines Trunks (keine ausgehenden Anrufe möglich) über einen alternativen Anschluss vom selben Anbieter oder einem anderen SIP-Provider umzusetzen?
Mehrere Standorte haben einen eigenen SIP-Trunk von easybell. Wenn die Sprachkanäke bei Standort A belegt sind soll ein Fallback für ausgehende Gespräche auf den Trunk von Standort B erfolgen. Hat das jemand so umgesetzt? Funktoniert das gut?

Beste Grüße
Silas

warum nicht alle Sprachkanäle und Nummern auf EINEN Trunk ?? Fertig

Wogegen ein Fallback auf nen anderen Sip Trunk keine so schlechte Option wäre…aber wie oft brauchst das ? 1x im Jahr ? wenn dann nicht auch der zweite Provider Down ist :slight_smile:

Weil es sich um viele Vorwahlbereiche handelt und die Tarife eigentlich getrennt in den Standorten abgerechnet werden sollen. Wenn dann aber etwas ausfällt oder eben die Auslastung sehr hoch ist, soll es auf einen Hauptstandort “fallbacken” können :slight_smile: Der Kunde wünscht es so.

Und eben Verfügbarkeitstechnisch auf einen anderen Trunk wäre es auch interessant. Das 1x im Jahr wäre dann das was vermieden werden soll :wink: Es wird sicherlich nicht oft zu dem Szenario kommen.

1 Like

Hallo @Silas,
eine gut getestete und “unterstützte” Lösung kann ich an dieser Stelle leider nicht bieten, aber wie folgt sollte sich ein Failover ausgehend umsetzen lassen:
Beispielinhalt:

exten => s,1,NoOp(customFailover)
same => n,Set(__SPYGROUP=${MDC_CALLEE_NUM_NAT}:${MDC_CALLER_NUM})
same => n,ExecIf($[ "${MDC_HINT_HANGUP_HANDLER}" != "" ]?Set(CHANNEL(hangup_handler_push)=hdlr-hint,s,1(${MDC_HINT_HANGUP_HANDLER})))
same => n,ExecIf($[ "${MDC_HINT_HANGUP_HANDLER}" != "" ]?Set(DEVICE_STATE(Custom:${MDC_HINT_HANGUP_HANDLER})=INUSE))
same => n,Dial(PJSIP/${MDC_CALLEE_NUM_NAT}@mdc_trunk_conf-{TRUNKID},,Itb(mdc_outgoing_predial^s^1))
same => n,GoToIf($[ "${DIALSTATUS}" = "ANSWER" ]?out)
same => n,PlayBack(beep)
same => n,Dial(PJSIP/${MDC_CALLEE_NUM_NAT}@mdc_trunk_conf-{TRUNKID2},,Itb(mdc_outgoing_predial^s^1))
same => n,GoToIf($[ "${DIALSTATUS}" = "ANSWER" ]?out)
same => n,PlayBack(beep)
same => n(out),Return() 

Wichtig ist hier das man bei dem Dial() den richtigen Trunkkontext setzt, diesen kann man in der WebCLI nachsehen (mit dem Trunk einen Call durchführen oder “pjsip show registrations” und versuchen richtig zuzuordnen). Das ist hier mit {{{TRUNKID}}} gemeint, das wird also durch eine Ziffer erstetzt.

Wenn ich dein Anwendungsfall aber richtig verstanden habe, dann sind die “Ausweichtrunks” schon auf anderen Anlagen in Verwendung. Die meisten SIP Provider unterstützen keine Mehrfachregistrierung, d.h. der Trunk, der woanders aktiv ist, ließe sich so nicht nutzen (ohne zu Problemen auf der anderen PBX zu führen).

Grüße,
Steve

1 Like

Hallo @Steve danke für die Antwort!
Die Trunks wären alle an einer Anlage eingebunden und es wäre demnach keine Doppelregistrierung vorhanden. Ich binde dies einfach als ausgehendes Skript global ein und ergänze die Trunk IDs, korrekt?

Das Ganze muss als Dialplanscript vom Typ ausgehend angelegt werden und beim Trunk mit {TRUNKID} (also vom ersten Dial()) zugewiesen werden. D.h. für jedes Amt wäre ein eigenes Script notwendig: Bei dem beim ersten Dial wird der eigene Trunkkontext angegeben und im zweiten der failover Kontext vom “Ausweichamt”.

1 Like

Hallo @Steve ,

vielen Dank! Sobald wir getestet haben, melde ich mich nochmal zurück!