VoIP

Substrings zuschneiden.

Hier ein kleines Beispiel:

exten => 1,1,Set(TestNummer=123456789)

Die 2. Stelle bis zum Ende ausschneiden mit :1
exten => 1,2,Dial(SIP/${TestNummer:1}) Ergebnis -> Dial(SIP/23456789)

Die hinteren 3 Zahlen ausschneiden mit :-3
exten => 1,2,Dial(SIP/${TestNummer:-3}) Ergebnis -> Dial(SIP/789)

Die vorderen 4 Zahlen ausschneiden mit :0:4
exten => 1,2,Dial(SIP/${TestNummer:0:4}) Ergebnis -> Dial(SIP/1234)

Ab der 2. Stelle 4 Zahlen ausschneiden mit :2:4
exten => 1,2,Dial(SIP/${TestNummer:2:4}) Ergebnis -> Dial(SIP/2345)

Oder mit der CUT Funktion ab einem Zeichen z.B. @  zuschneiden.
siehe http://www.soho-piper.de/?p=262

Anrufe via SIP_HEADER(To) zuordnen.

Das Problem:

Ich habe bei Sipgate 3 Register und 10 externe Rufnummern.
Mit den 3 Register kann ich aber nur 3 externe Rufnummern an 3 internen Endgeräten zuordnen.

Die Lösung:

Ich schicke ALLE externe Anrufe in eine exten sipgatefilter und schneide mir den SIP_HEADER(To) so zu, dass ich ein Goto(Sprungadresse,1) ausführen kann.

Mit dieser Lösung kann ich die 10 Rufnummern (97167160 bis 97167169) den 10 internen Rufnummern (1000 bis 1009) zuordnen.

sip.conf

register => [1.-sip-reg-name]:[dein-sip-reg-password]@sipgate.de/sipgatefilter
register => [2.-sip-reg-name]:[dein-sip-reg-password]@sipgate.de/sipgatefilter
register => [3.-sip-reg-name]:[dein-sip-reg-password]@sipgate.de/sipgatefilter

extensions.conf

exten => sipgatefilter,1,NoOp(*** ${SIP_HEADER(To)} ***)
; SIP_HEADER(To) = <sip:004922897167160@sipgate.de>
; Ich brauche aber nur 97167160 für den Goto Befehl
same => n,Set(Sprungadresse=${CUT(SIP_HEADER(To),@,1)})
;  schneidet @siggate.de ab.
; Sprungadresse = <sip:004922897167160
same => n,Goto(${Sprungadresse:-8},1)
;  schneidet die letzten 8 Nummern aus.
; Sprungadresse:-8 = 97167160

exten => 97167160,1,Dial(SIP/1000)

exten => 97167161,1,Dial(SIP/1001)

exten => 97167162,1,Dial(SIP/1002)

exten => 97167163,1,Dial(SIP/1003)

exten => 97167164,1,Dial(SIP/1004)

exten => 97167165,1,Dial(SIP/1005)

exten => 97167166,1,Dial(SIP/1006)

exten => 97167167,1,Dial(SIP/1007)

exten => 97167168,1,Dial(SIP/1008)

exten => 97167169,1,Dial(SIP/1009)

 

 

 

Asterisk – telefonieren über Googletalk

Beispiel für … GoogleTalk im Asterisk mit Menüabfrage in der Chatbox
Download: http://www.soho-piper.de/asterisk/google.txt

[google-in]
exten => s,1,Answer
exten => s,n,Set(CHANNEL(LANGUAGE)=de)
exten => s,n,Set(googlecid=${CALLERID(name)})
exten => s,n,Set(normalcid=${CUT(googlecid,/,1)})
exten => s,n,Set(CALLERID(all)=${normalcid})
exten => s,n,Wait(4)
exten => s,n,SendText(\n\r TEST TEST TEST auf exten s …\n  Ihre CALLERID ist:\n ${CALLERID(name)})
exten => s,n,SendText(\n Wenn Sie die App-Nr. kennen, …\n dann koennen Sie sie jetzt hier eintippen)
exten => s,n,SendText(\n 1 -> Rainers 1.Grandstream \n 2 -> Rainers 2.Grandstream \n 3 -> Konferenz \n 4 -> Queue1 \n 5 -> Wetter-Ansage-Bonn \n 6 -> Echo-Test)
exten => s,n,SendDTMF(1)
exten => s,n,Background(vm-enter-num-to-call)
exten => s,n,Set(usereingabe=${JABBER_RECEIVE(gtalk_account,${CALLERID(name)::15},20)})
exten => s,n,SendText(\n\rSie werden jetzt mit App.Nr. ${usereingabe} verbunden.) exten => s,n,Goto(jabber-in,${usereingabe},1) exten => s,n,Hangup()

exten => 1,1,Dial(SIP/1010)

exten => 2,1,Dial(SIP/1003)

exten => 3,1,meetme(1232,M)

exten => 4,1,queue(queue1)

exten => 5,1,Answer
exten => 5,n,Wait(2)
exten => 5,n,Playback(wetter)
exten => 5,n,Goto(jabber-in,5,2)

exten => 6,1,Answer
exten => 6,n,Wait(2)
exten => 6,n,Playback(demo-echotest)
exten => 6,n,Echo
exten => 6,n,Playback(demo-echodone)
exten => 6,n,Hangup

exten => h,1,JabberSend(gtalk_account,${CALLERID(name)}, Vielen Danke fuer Ihren Anruf.)
exten => h,n,Hangup

 

Asterisk Call Completion Supplementary Services

Call Completion Supplementary Services (CCSS) Neu im Asterisk 1.8.X

Wird in der ccss.conf eingestellt
Ich habe hier die Policy auf generic eingestellt
ccss.conf

cc_agent_policy=generic
cc_monitor_policy=generic

sip.conf kommt hinzu

[1000]
; alle Standardwerte plus
call-limit=1
cc_agent_policy=generic
cc_monitor_policy=generic

[1001]
; alle Standardwerte plus
call-limit=1
cc_agent_policy=generic
cc_monitor_policy=generic

extensions.conf

exten = 1000,1,Dial(SIP/1000,20,tr)
same = n,CallCompletionRequest
same = n,Hangup

exten = 1001,1,Dial(SIP/1001,20,tr)
same = n,CallCompletionRequest
same = n,Hangup

Gruß
Rainer