.titleBar { margin-bottom: 5px!important; }

[HowTo] Automatisierte Anwahl von calling cards

Dieses Thema im Forum "Asterisk Rufnummernplan" wurde erstellt von TinTin, 7 Juni 2005.

  1. TinTin

    TinTin Aktives Mitglied

    Registriert seit:
    6 Mai 2004
    Beiträge:
    1,864
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #1 TinTin, 7 Juni 2005
    Zuletzt bearbeitet: 14 Feb. 2006
    Achtung
    Stanaphone hat die kostenlose Anwahl von 1-800 Nummern eingestellt, stattdessen kann man jetzt aber einen anderen Provider nehmen. Die jeweils aktuelle/neueste Version dieser Anleitung findet man hier


    Hallo zusammen,

    hier, wie versprochen, meine Erkenntnisse bzgl. einer durch Asterisk automatisierten Anwahl einer calling card Nummer mit Übermittlung der PIN sowie der zu wählenden Rufnummer.

    Das Beispiel bezieht sich alleinig auf die Anwahl von Handynummern in Deutschland, kann natürlich für andere Länder und/oder Festnetznummern angepaßt werden.

    Um das Beispiel nachzuspielen wird benötigt:

    1. Asterisk :)
    2. Ein kostenloser account bei http://www.stanaphone.com
    3. Eine calling card

    Warum Stanaphone? Stanaphone ist einer der wenigen Anbieter, die kostenlos Anrufe auf 1-800 Nummern in den USA anbieten. Bei keinem anderen kostenlosen Anbieter für die Wahl von 1-800 Nummern war ich bisher erfolgreich mit dem automatisierten senden von DTMF Tönen via Asterisk. Wer hier noch einen anderen kostenlosen Anbieter nennen kann mit dem meine Methode funktioniert... immer her damit. Mit Sipgate und Nikotel funktioniert es auch, allerdings sind Anrufe über die beiden Anbieter zu 1-800 Nummern in den USA nicht kostenlos.

    [s:7bd2a38b70]Als calling card benutze ich die "EuroCell" von Sprint. Erhältlich z.B. via http://www.cheapphonecards.com : calling card suchen für Gespräche von USA nach Mobilfunk Deutschland - bestellen und ggf. vorher ergoogelten Rabattcode eingeben (bei mir funktionierte noch save15). Die calling card kostet ohne Rabatt US $ 10 für 166min. Das sind umgerechnet bei heutigem (relativ schlechtem) Dollarkurs 4,9 EuroCent/min. - mit Rabattcode dann noch weniger.[/s:7bd2a38b70]

    Die "Eurocell" gibt's leider nicht mehr, daher habe ich das Beispiel jetzt angepaßt an eine neuere calling card von Sprint die es jetzt gibt. Kurs ist etwas schlechter, die Karte kostet US $ 15 für 166min. auf deutsche Handys, was umgerechnet einen Minutenpreis von 7,5 EuroCent/min. ergibt. Die Karte hab' ich gekauft bei http://www.ebuypins.com . Links im search Fenster nach "sprint" suchen und die erste gelistete auswählen:

    Sprint (#1) International Prepaid Phone Card - $15.00


    Wenn man länger als 7min. telefoniert lohnt sich die Sprint (#3), da sie dann billiger wird als die #1. Der Unterschied bei der #3 ist, dass man pro Gespräch eine connection fee von 50 UScent zahlt, dafür dann aber nur 2,4 UScent/min. (!). Ggf. kann man sich also beide Karten holen und dann den Dialplan dahingehend erweitern dass man entweder über die eine oder die andere telefoniert.


    Jetzt aber zum eigentlichen Thema:

    Relevante Einträge in der sip.conf:

    Code:
    ;registrieren bei stanaphone, Achtung: das Webpasswort ist nicht identisch
    ;mit dem SIP Passwort, einloggen bei stanaphone und nachschauen wie es
    ;lautet, die "Nummer" ist die von stanaphone vergebene Telefonnummer
    
    register => Nummer:SipPasswort@sip.stanaphone.com/Nummer
    
    [stanaphone]
    type=friend
    username=Nummer
    secret=SipPasswort
    fromuser=Nummer
    host=sip.stanaphone.com
    fromdomain=sip.stanaphone.com
    nat=yes ;wenn Asterisk hinter einem Router, sonst nat=no
    context=incoming
    canreinvite=no
    qualify=no
    insecure=very
    dtmfmode=rfc2833
    tos=reliability
    disallow=all
    allow=ulaw ;unbedingt ulaw benutzen, wichtig für DTMF Töne !
    allow=alaw
    
    [Endgeraet]
    ...
    ...
    ...
    context=MeinDialout
    ...
    
    Relevante Einträge in der extensions.conf
    Code:
    
    [MeinDialout]
    
    ;nur bei Handyvorwahlen reagieren
    ;ersetze NNNNNNNNNN mit Deiner calling card Nummer
    
    exten => _01[5-7].,1,SetGlobalVar(EUROCELL=NNNNNNNNNN)
    
    ;die gewählte Rufnummer speichern wir in der Variablen DIALEDNUMBER
    ;und schneiden die Null vorne ab, da sie später nicht mitgewählt werden
    ;darf
    
    exten => _01[5-7].,2,SetGlobalVar(DIALEDNUMBER=${EXTEN:1})
    
    ;Jetzt wählen wir los über stanaphone, die 18008145427 ggf. mit der 
    ;calling card access Nummer ersetzen die ihr verwendet, falls nicht auch
    ;die EuroCell Karte benutzt werden soll. Nach Anwahl wird ins Macro
    ;macro-MD2 verzweigt.
    
    exten => _01[5-7].,3,Dial(SIP/18008145427@stanaphone,,TM(MD2))
    
    [macro-MD2]
    ;Jetzt erfolgt das senden der calling card Nummer per DTMF
    ;und sonstige Tönen für die Menüsteuerung der calling card
    ;wenn nicht EuroCell verwandt wird, muß man es natürlich 
    ;auf die eigene calling card anpassen. Die Pausen zwischen
    ;den Tönen (Wait(x)) können evtl. verkürzt werden, muß man selbst mal
    ;ausprobieren, für mich lief es so am besten.
    
    exten => s,1,SIPDtmfMode(info)
    exten => s,2,SendDTMF(1)
    exten => s,3,Wait(2)
    exten => s,4,SendDTMF(${EUROCELL})
    exten => s,5,Wait(2)
    exten => s,6,SendDTMF(2)
    exten => s,7,Wait(1)
    exten => s,8,SendDTMF(49${DIALEDNUMBER})
    
    ACHTUNG
    Noch ein wichtiger Hinweis: Ruft man zu oft hintereinander (4-5 Mal oder öfter) in kurzer Zeit über stanaphone eine 1-800 Nummer an, so wird diese Nummer temporär für ein paar Stunden geblockt. Das kann beim Testen natürlich schnell mal passieren...

    Wenn mein Dialplan Verwendung findet und auch bei Euch gut funktioniert dann schreibt hier doch bitte einen Kommentar dazu. Natürlich auch falls es bei Euch nicht funktionieren sollte.

    Ich hoffe es hat sich kein Tippfehler eingeschlichen.

    Viel Spaß beim basteln & Geld sparen!

    Tin
     
  2. MaFL

    MaFL Neuer User

    Registriert seit:
    1 Feb. 2005
    Beiträge:
    17
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hi Tin,

    ich befürchte es gibt die Calling Card nicht mehr :-(
    Am Mittwoch war sie out of stock und seit gestern hat cheapphonecards sie nicht mehr im Programm.
    Eine Alternative/anderen Anbieter konnte ich bis jetzt nicht finden.

    Ich hoffe das ist nur temporär.

    Gruß
    Matthias
     
  3. TinTin

    TinTin Aktives Mitglied

    Registriert seit:
    6 Mai 2004
    Beiträge:
    1,864
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ja, ist mir gestern auch erst aufgefallen, sowas dummes, hätte ich bloß ein paar mehr gekauft. Naja...

    Es gibt noch eine andere von Sprint (anscheinend aber noch nicht bei cheapphonecards.com), allerdings lohnt sich die nur für Telefonate so ab 4-5min., der Minutenpreis zu deutschen Handys liegt bei nur 3 USc./min, aber dafür gibt es einen Aufschlag von 49 USc pro Gespräch. Der Rest ist gleich, keine maintenance fee usw.

    Gruß,
    Tin
     
  4. rollo

    rollo IPPF-Promi

    Registriert seit:
    5 Juli 2004
    Beiträge:
    8,280
    Zustimmungen:
    1
    Punkte für Erfolge:
    38
    Ort:
    JO30SK
    Registrierung bei FWD ist unkomplizierter und funzt auch zu +1800er Nummern, dazu ***1800XXXXXXX wählen

    Sipphone bietet ebenfalls kostenlose Anrufe zu +1800

    jo
     
  5. TinTin

    TinTin Aktives Mitglied

    Registriert seit:
    6 Mai 2004
    Beiträge:
    1,864
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    @rollo

    nur funktionierte bei meinen Tests bei keinem von beiden Asterisk's Senddtmf zufriedenstellend und es geht ja um die automatisierte Anwahl.

    Gruß,
    Tin
     
  6. TinTin

    TinTin Aktives Mitglied

    Registriert seit:
    6 Mai 2004
    Beiträge:
    1,864
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hab' jetzt noch eine Sprint Karte gefunden gleiche Konditionen wie vorher die EuroCell, nur kostet sie US $ 15 statt wie vorher 10. Aber das ist immer noch ein guter Kurs entspricht dann 7,5 EuroCent /min. auf deutsche Handys und kein extra Aufschlag pro Anruf wie bei der anderen die ich vorher erwähnte.

    Die Karte hab' ich gekauft bei http://www.ebuypins.com . Links im search Fenster nach "sprint" suchen und die erste gelistete auswählen:

    Sprint (#1) International Prepaid Phone Card - $15.00 .

    Damit kann man 166min. zu jedem deutschen Handy vertelefonieren, die Karte ist gültig bis September 2007 (!), keine maintenance fee, kein Aufschlag, abgerechnet wird im Minutentakt.

    Gruß,
    Tin
     
  7. betateilchen

    betateilchen Grandstream-Guru

    Registriert seit:
    30 Juni 2004
    Beiträge:
    12,882
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    am Letzenberg
    @tintin interessante Sache.

    Um die ganze Angelegenheit noch zu vereinfachen, könnte man noch die Möglichkeit hinzufügen, die CC-Number in der asterisk-internen Datenbank abzulegen, damit man bei einer neuen Karte nicht immer die extensions.conf anpassen muß.

    Code:
    exten => _*55.,1,NoOp(CallingCardNumber speichern)
    ; mit *55xxxxxxx die CC-Nummer setzen.
    ; Jeder Aufruf überschreibt den vorherigen Eintrag.
    exten => _*55.,n,DBput(ccnum/${CALLERIDNUM}=${EXTEN:3})
    exten => _*55.,n,HangUp
    
    ;Auslesen im Dialplan dann mit 
    exten => _0[15-7].,1,DBget(eurocell=ccnum/${CALLERIDNUM})
    
    Das Ganze ist in dem hier vorgestellten Beispiel natürlich auch noch Caller-ID-Num abhängig. Daber das läßt sich ja problemlos ändern.
     
  8. TinTin

    TinTin Aktives Mitglied

    Registriert seit:
    6 Mai 2004
    Beiträge:
    1,864
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    @betateilchen

    sehr gute Idee, danke! Vereinfacht es noch mehr.
     
  9. Party-Japaner

    Party-Japaner Neuer User

    Registriert seit:
    23 Juli 2004
    Beiträge:
    176
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    echt genial... ich muss nur noch meinen Asterisk Server bauen und warten bis die Hardware kommt....
     
  10. MaFL

    MaFL Neuer User

    Registriert seit:
    1 Feb. 2005
    Beiträge:
    17
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    soo...
    habs am laufen, allerdings mit 2 kleinen Änderungen:

    Dtmfmode musste bei mir auf Info.
    Mit rfc2833 hab ich eine Verwählquote von >70%, mit Info 0,0%.

    Im Dialplan stimmt das _0[15-7] doch nicht?
    _01[5-7]

    Es ist interessant wieviel das tos=reliability bei der SIP Überseeverbindung macht. Mit Lowdelay gibts Knackser ohne Ende, mit reliability herrscht absolute Stille. Da scheinen sich also tatsächlich ein paar Router dran zu halten :)

    Sprachqualität ist abgesehen von einer etwas längeren Laufzeit (wobei die sich auch nicht groß von der der callbycall Anbieter unterscheitdet) einwandfrei.

    Tnx!!
    Matthias :)
     
  11. udosw

    udosw Aktives Mitglied

    Registriert seit:
    20 März 2004
    Beiträge:
    1,114
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Hannover
    Ich versuche etwas ähnliches um eine Durchwah SIP -> ISDN (hier durch eine OpenCom 31) zu erreichen, aber es klappt gar nicht:

    extensions.conf
    Code:
    exten => 995,1,SetCallerId,760XXXX
    exten => 995,2,Dial(SIP/11,,TM(Durchwahl))
    exten => 995,3,Hangup
    
    [macro-Durchwahl]
    exten => s,1,SIPDtmfMode(rfc2833)
    exten => s,2,Wait(5)
    exten => s,3,SendDTMF(0000)
    exten => s,4,Wait(1)  
    exten => s,5,SendDTMF(210XXXX)
    SIP 11 ist die Durchwahl der OC31. Die nimmt den Ruf auch an, aber reagiert dann nicht weiter. Wenn ich die Zahlen von Hand über's Telefon eigebe, geht es.

    Code:
        -- Executing SetCallerID("SIP/12-b667", "760XXXX") in new stack
        -- Executing Dial("SIP/12-b667", "SIP/11@11||TM(Durchwahl)") in new stack
        -- Called 11@11
        -- SIP/11-0790 is making progress passing it to SIP/12-b667
        -- SIP/11-0790 is ringing
    Jun 28 00:11:14 WARNING[25750]: rtp.c:440 ast_rtp_read: RTP Read too short
    Jun 28 00:11:14 WARNING[25750]: rtp.c:440 ast_rtp_read: RTP Read too short
        -- SIP/11-0790 answered SIP/12-b667
        -- Executing SIPDtmfMode("SIP/11-0790", "rfc2833") in new stack
        -- Executing Wait("SIP/11-0790", "5") in new stack
        -- Executing SendDTMF("SIP/11-0790", "0000") in new stack
        -- Executing Wait("SIP/11-0790", "1") in new stack
        -- Executing SendDTMF("SIP/11-0790", "210XXXX") in new stack
        -- Attempting native bridge of SIP/12-b667 and SIP/11-0790
      == Spawn extension (intern, 995, 2) exited non-zero on 'SIP/12-b667'
    pingu*CLI> 
    Nach Wahl der SIP 11 nimmt die OC31 den Anruf entgegen und die DTMF-Töne werden wohl auch gesendet (zumindest wird das Macro ausgeführt), aber es passiert nichts. Erst wenn das alles fertig sit, wird das Audio durchgeschaltet. Dann kann ich von Hand nochmal versuchen, das klappt dann auch.

    Habe auch schon inband und info und ulaw/alaw als Codec usw probiert.
    Hat jemand 'ne Idee?

    Udo
     
  12. PsychoMantis

    PsychoMantis Aktives Mitglied

    Registriert seit:
    18 Dez. 2005
    Beiträge:
    2,486
    Zustimmungen:
    1
    Punkte für Erfolge:
    38
    Beruf:
    Schüler
    Ort:
    Ingolstadt
    Ich grabe diesen alten Thread mal aus, um mitzuteilen, dass es bei mir auch funktioniert :)
    Allerdings geht es bei mir nicht mit info, sondern nur mit inband.
    Benutze es um automatisch über dialnow.com rauszuwählen.
    Hier der Teil meiner extensions.conf
    Code:
    [outgoing]
    exten => _007.,1,SetGlobalVar(DIALEDNUMBER=${EXTEN})
    exten => _007.,2,Dial(SIP/021153997878@voipdiscount,,TM(MD2))
    
    [macro-MD2]
    exten => s,1,SIPDtmfMode(inband)
    exten => s,2,Wait(2)
    exten => s,3,SendDTMF(www${DIALEDNUMBER}#)
    Funzt alles wunderbar nur diese Zeile iritiert mich: "[Mar 23 13:25:33] WARNING[18720]: rtp.c:891 ast_rtcp_read: RTCP Read too short"
     
  13. aaa007

    aaa007 Neuer User

    Registriert seit:
    4 Aug. 2008
    Beiträge:
    13
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Köln
    hier mit Abwarten, bis die Ansage vom Provider kommt

    :) danke danke danke für dieses Posting.

    Hier meine Ergänzung zum Macro, die eine Antwort flexibel abwartet, bevor
    die DTMF Folge abgesendet wird.

    ... es sind ein paar überflüssige Kommentarzeilen drin, die die Funktionsweise
    am Monitor besser aufzeigen.

    [macro-prepaid]
    ;
    exten => s,1,NoOp(macro-prepaid: Calling card/prepaid)
    exten => s,n,Set(TIMEOUT(response)=20)
    exten => s,n,BackgroundDetect(de/custom/silence30,1000,50,30050)
    exten => s,n,NoOp(End of backgrounddetect)
    ;
    exten => talk,1,NoOp(yeah, answer detected)
    exten => talk,n(go),SIPDtmfMode(inband) ;info
    exten => talk,n(pin),GotoIf($["${PIN}" = ""]?talk,num)
    exten => talk,n,SendDTMF(w${PIN})
    exten => talk,n,Wait(3)
    exten => talk,n(num),GotoIf($["${CALLNR}" = ""]?talk,end)
    exten => talk,n,SendDTMF(w${CALLNR}#)
    exten => talk,n(end),NoOp(lösche Variablen für nächsten call)
    exten => talk,n,SetGobalVar(CALLNR=)
    exten => talk,n,SetGobalVar(PIN=)

    CALLNR ist die anzurufende Nr
    PIN ist die PIN, wenn erforderlich
    ggf. mit w vor den Nummern die Wartezeiten erhöhen

    es muss noch ein GSM file erstellt werden, das 30sec Stille enthält,
    de/custom/ ist der Pfad der Ablage unter /var/lib/asterisk/sounds/

    ich benutze dafür wavepad von www.nch.com/wavepad/de, ist
    ein super Programm, das unlizensiert verwendet werden darf

    die backgrounddetect Funktion ist gut bei voip-info.org beschrieben
    und die Parameter dort entnommen.

    für normale Gespräche ohne den Provider werden die Daten CALLNR
    und PIN gelöscht, sonst wird die Tonfolge gesendet. Wer lieber mit
    ARG-parametern arbeiten möchte, bitte sehr...

    Euer :mad: aaa007
     
  14. aaa007

    aaa007 Neuer User

    Registriert seit:
    4 Aug. 2008
    Beiträge:
    13
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Köln
    noch

    kleiner Fehler
    SetGlobalVar (l vergessen)

    Euer :mad: aaa007