IP-Phone-Forum  

Zurück   IP-Phone-Forum > VoIP-(Software)-TK-Anlagen > Asterisk > Asterisk Allgemein
Registrieren Hilfe Benutzerliste Wiki Suchen Heutige Beiträge Alle Foren als gelesen markieren

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 12.05.2006, 23:40   #1
alvoip
IPPF-Fan
 
Registriert seit: 31.10.2004
Ort: Wien
Beiträge: 446
[HowTo] Zahlen in Buchstaben umzuwandeln?

Ich habe aufgrund des Threads http://www.ip-phone-forum.de/showthread.php?t=98998 eine Verbindung zwischen meinem Asterisk und Skype geschaffen. Wirklich eine super Sache, Skype ist jetzt wie ein weiterer SIP-Provider von meinem Asterisk aus verwendbar.

Ein Problem dabei ist, dass Skype keine Nummern, sondern Namen mit Buchstaben und Ziffern verwendet. Den Echotest von Skype, der die "Nummer" echo123 hat, erreiche ich so:
Code:
exten => 98812,1,Dial,SIP/echo123@skype|60
Ich kann natürlich für jedes meiner Skype-Ziele eine solche Zeile machen, aber das hat natürlich keine Flexibilität. Jedes Mal, wenn ein neues Skype-Ziel dazu kommt, müsste ich in die extensions.conf. Besser wäre natürlich, die Skype-Namen in Ziffern darzustellen, diese dann am Telefon zu wählen, und Asterisk dann das Ganze wieder in die Buchstaben zurückverwandeln zu lassen. Dabei habe ich an folgendes System gedacht:
Code:
a = 21 (weil es auf der Zifferntaste 2 der erste Buchstabe ist)
b = 22 (weil es auf der Zifferntaste 2 der zweite Buchstabe ist)
.....
z = 94 (weil es auf der Zifferntaste 9 der vierte Buchstabe ist)

Für die Ziffern 0 is 9 würde ich 00 bis 09 nehmen.
Der Skypename echo123 hätte dann die Nummer 32 23 42 63 01 02 03. Ich bin aber an der Implementierung dieser Stringmanipulation in Asterisk gescheitert. Gehen tut es aber sicher. Wer traut sich da drüber?

Geändert von betateilchen (14.05.2006 um 13:43 Uhr).
alvoip ist offline  
Alt 12.05.2006, 23:46   #2
VoIP_Indianer
IPPF-Fan
 
Benutzerbild von VoIP_Indianer
 
Registriert seit: 11.12.2005
Beiträge: 134
Das läßt sich am einfachsten in der extensions.ael lösen

Du teilst die Länge der gewählten Nummer durch 2 - damit weißt Du, wieviele Zeichen Du am Schluß haben mußt. MIt diesem Zähler gehst Du in eine Schleife, schneidest jedesmal 2 Stellen von der Nummer ab und wertest die in einem case Statement aus. Das Ergebnis hängst Du an die Ziel-Variable an.

Fertig ist die Laube.

Geändert von betateilchen (13.05.2006 um 00:23 Uhr).
VoIP_Indianer ist offline  
Alt 13.05.2006, 22:16   #3
alvoip
IPPF-Fan
 
Registriert seit: 31.10.2004
Ort: Wien
Beiträge: 446
Danke für den Tip mit extensions.ael. Als Newbie wusste ich gar nichts davon, und habe mich gleich schlau gemacht. Hier nun die Lösung meines Problems aus meiner extensions.ael:
Code:
context skype { 
    _1080X. => { 
         skypenum=${EXTEN:4}; 
         for (x=-2; ${x} < ${LEN(${skypenum})}-2; x=${x} + 2) { 
             skypesub=${skypenum:${x}:2}; 
             switch (${skypesub}) { 
                  case 21: 
                       skypechar=a; 
                       break; 
                  case 22: 
                       skypechar=b; 
                       break; 
                  case 23: 
                       skypechar=c; 
                       break; 
                  case 31: 
                       skypechar=d; 
                       break; 
                  case 32: 
                       skypechar=e; 
                       break; 
                  case 33: 
                       skypechar=f; 
                       break; 
                  case 41: 
                       skypechar=g; 
                       break; 
                  case 42: 
                       skypechar=h; 
                       break; 
                  case 43: 
                       skypechar=i; 
                       break; 
                  case 51: 
                       skypechar=j; 
                       break; 
                  case 52: 
                       skypechar=k; 
                       break; 
                  case 53: 
                       skypechar=l; 
                       break; 
                  case 61: 
                       skypechar=m; 
                       break; 
                  case 62: 
                       skypechar=n; 
                       break; 
                  case 63: 
                       skypechar=o; 
                       break; 
                  case 71: 
                       skypechar=p; 
                       break; 
                  case 72: 
                       skypechar=q; 
                       break; 
                  case 73: 
                       skypechar=r; 
                       break; 
                  case 74: 
                       skypechar=s; 
                       break; 
                  case 81: 
                       skypechar=t; 
                       break; 
                  case 82: 
                       skypechar=u; 
                       break; 
                  case 83: 
                       skypechar=v; 
                       break; 
                  case 91: 
                       skypechar=w; 
                       break; 
                  case 92: 
                       skypechar=x; 
                       break; 
                  case 93: 
                       skypechar=y; 
                       break; 
                  case 94: 
                       skypechar=z; 
                       break; 
                  case 00: 
                       skypechar=0; 
                       break; 
                  case 01: 
                       skypechar=1; 
                       break; 
                  case 02: 
                       skypechar=2; 
                       break; 
                  case 03: 
                       skypechar=3; 
                       break; 
                  case 04: 
                       skypechar=4; 
                       break; 
                  case 05: 
                       skypechar=5; 
                       break; 
                  case 06: 
                       skypechar=6; 
                       break; 
                  case 07: 
                       skypechar=7; 
                       break; 
                  case 08: 
                       skypechar=8; 
                       break; 
                  case 09: 
                       skypechar=9; 
                  default: 
                       skypechar=§; 
             }; 
         skypename=${skypename}${skypechar};
         }; 
         Dial(SIP/${skypename}@skype,60);
    }; 
};
Zur Erklärung:

Skype hat bei mir die Providervorwahl 1080. Also wird zuerst auf dieses Pattern gematched, und die ersten 4 Zeichen (also 1080) abgeschnitten. Dann wird die restliche Ziffernfolge paarweise abgearbeitet, und im switch statement das jeweilige Zeichen zugeordnet. Als primitives Errorhandling provoziere ich bei einem ungültigen Zahlenpaar einen Fehler, indem ich das Zeichen § zuweise. Das ist quick and dirty, aber funktioniert.

Nun kann ich ganz normal aus meinem Asterisk über ein Zifferntelefon nach Skype wählen. Wehrmutstropfen ist halt, dass Skype nicht auf meinem vServer laufen kann, sondern der Asterisk auf meinen Windows-PC zu Hause zugreifen muss. Aber wer weiß, vielleicht gibt es da auch einmal eine Lösung. So finde ich meine Lösung schon recht befriedigend, da sie doch einiges von der Proprietärität von Skype nimmt. Immerhin ist es nun in meinen Asterisk integriert.

Wenn jemand Verschönerungsvorschläge für meine Lösung hat: Nur zu, postet sie. Das ist schließlich mein erster Gehversuch mit AEL gewesen.

Als Nächstes werde ich dieses Programmstück dazu verwenden, SIP-URIs von der Zifferntastatur zu wählen. Ich muss dazu lediglich noch Zifferpaare für Punkt, Bindestrich und Klammeraffe einführen. Ich denke ich werde 10, 11 und 12 nehmen.
alvoip ist offline  
Alt 13.05.2006, 22:24   #4
betateilchen
Grandstream-Guru
 
Benutzerbild von betateilchen
 
Registriert seit: 30.06.2004
Ort: am Letzenberg
Beiträge: 13.010
Daumen hoch Super - siehste, da haste wieder was dazugelernt.

Zitat:
Zitat von alvoip
Wenn jemand Verschönerungsvorschläge für meine Lösung hat: Nur zu, postet sie. Das ist schließlich mein erster Gehversuch mit AEL gewesen.
Für einen ersten Versuch hast Du das Problem doch ganz super gelöst Meine Anerkennung!
betateilchen ist offline  
Alt 14.05.2006, 13:42   #5
n8isch
IPPF-Fan
 
Benutzerbild von n8isch
 
Registriert seit: 22.03.2005
Ort: Trier
Beiträge: 216
n8isch eine Nachricht über ICQ schicken n8isch eine Nachricht über MSN schicken n8isch eine Nachricht über Skype schicken
auch einen glückwunsch von mir, das ist wirklich ausgesrochen praktikabel und sobald ich hier ein wenig luft habe, werde ich das hier auch umsetzen. vielen dank!
__________________
Software:
Asterisk 1.4.17-BRIstuffed-0.4.0-test6 auf Debian Etch
Channel: chan_mobile via SGH-E720, ChanSkype, chan_zap, chan_iax2, chan_sip
Hardware:
AMD Geode NX, 1 x Siemens optiPoint WL2 (ge"S"t), 1x Utstarcom F1000, 1x Arcor Twintel, 1x T-Com TC-300, 1x Cistrix CT-100, 1x Giptel G100
n8isch ist offline  
Alt 11.02.2007, 20:23   #6
n8isch
IPPF-Fan
 
Benutzerbild von n8isch
 
Registriert seit: 22.03.2005
Ort: Trier
Beiträge: 216
n8isch eine Nachricht über ICQ schicken n8isch eine Nachricht über MSN schicken n8isch eine Nachricht über Skype schicken
hallo alvoip

könntest du mir sagen, wie ich da ein - unterbringe?
wenn ich das versuche einzubauen, versucht asterisk immer damit zu rechnen und ich bekomme es auch nicht gequotet.

viele grüße
n8|
__________________
Software:
Asterisk 1.4.17-BRIstuffed-0.4.0-test6 auf Debian Etch
Channel: chan_mobile via SGH-E720, ChanSkype, chan_zap, chan_iax2, chan_sip
Hardware:
AMD Geode NX, 1 x Siemens optiPoint WL2 (ge"S"t), 1x Utstarcom F1000, 1x Arcor Twintel, 1x T-Com TC-300, 1x Cistrix CT-100, 1x Giptel G100
n8isch ist offline  
Alt 11.02.2007, 20:32   #7
alvoip
IPPF-Fan
 
Registriert seit: 31.10.2004
Ort: Wien
Beiträge: 446
Dieses Problem konnte ich leider auch nicht lösen. Ich kiefelte noch wochenlang daran herum, bis ich schließlich aufgab. Damit ist meine Lösung leider nur eine Halbe geblieben.

Aber jetzt wo das Thema wieder aufgegriffen ist, kommt hoffentlich jemand mit einer Idee.
alvoip ist offline  
Alt 23.09.2007, 12:54   #8
PsychoMantis
IPPF-Tausend-VIP
 
Benutzerbild von PsychoMantis
 
Registriert seit: 18.12.2005
Ort: Ingolstadt
Beiträge: 1.540
Ne, leider nicht.

Ich experimentiere gerade zwar damit, aber wirklich weiter komme ich auch nicht.
__________________
Router: Fritz!Box Fon WLAN 7270v3
Telefon: 1x MT-D + 1x MT-F
VoIP-Anbieter: dus.net | sipgate.de | Finarea/Betamax
Server: Proplay V-Server (5,99¤/Quartal) mit Asterisk 1.6.2.10
GSM-Gateway: Asterisk mit chan_datacard
Anbindung: 1&1
PsychoMantis ist gerade online  
Alt 23.09.2007, 16:29   #9
betateilchen
Grandstream-Guru
 
Benutzerbild von betateilchen
 
Registriert seit: 30.06.2004
Ort: am Letzenberg
Beiträge: 13.010
@Psycho

welchen Sinn hat es eigentlich, nach so langer Zeit eine so nichtsagende Antwort zu posten
betateilchen ist offline  
Thema geschlossen




Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge anzufügen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Ähnliche Themen
Thema Erstellt von Forum Antworten Letzter Beitrag
Outlook Wählhilfe (Makro) ohne Box zu modifizieren marcomarco andere Software 1529 Heute 09:54
Outlook Wählhilfe (Makro) ohne Box zu modifizieren PacmanII andere Software 165 24.04.2006 20:07
Wie mit X-Lite Buchstaben wählen ? magifix XLite/ XPro/ eyeBeam 1 28.01.2006 10:06
Wahlhilfe über Port 1011 (FritzBoxDial Makro) Verbesserung prontoman FRITZ!Box Fon: Modifikationen 0 02.09.2005 16:42
[GELÖST] X-Lite nimmt keine Buchstaben mehr an Eifel XLite/ XPro/ eyeBeam 3 16.03.2005 20:07


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:07 Uhr.


Powered by vBulletin Version 3.6.8 (Deutsch)
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.