Abgleich mit Webdiensten (z.B. dem Telefonbuch, Klicktel)

Hallo zusammen,

Ich habe von einem Kunden ein Anforderung erhalten, die ich noch nicht umsetzen kann.
Ist es möglich Rufe mit Online Telefonbüchern z.B. Klicktel (oder jetzt 11880) abzugleichen? Oder Anrufe von hier zu starten?

Viele Grüße
Thomas Enke

1 Like

Hallo Thomas,

wir haben das am laufen. Wir gleichen mit telefonbuch.de und dasoertliche.de ab und schreiben es in Labels.

Bei Interesse kann das gerne mal ausführlicher schreiben.

Gruss

Flo

1 Like

Hallo Flo,

Ja das wäre schön wenn du das Mal ausführlicher beschreibst.

Gruß Markus

Hallo,

Es ist schon mal gut zu wissen, dass es geht :slight_smile:
Wäre super wenn du es mal beschreiben könntest.

Vielen Dank und Gruß
Thomas

Bin eben darübergestolpert…würde mich auch Interessieren :slight_smile:

Hier ist noch jemand mit Interesse! :blush:

Hallo,

als erstes erstellen wir ein Label (telefonbuch.de oder dasoerstliche.de).

Anschließend wird ein Script erstellt. Dies kann bei “Anruf vorher” eingebunden werden. Die Variable MDC_LABEL-3 entspricht dem vorher erstellten Label.

exten => s,1,Verbose("=================================")
exten => s,2,agi(agi_get_oertliche.agi,${MDC_CALLER_NUM_NAT})
exten => s,3,Verbose("=================================")
exten => s,4,Verbose("===>${MDC_LABEL-3}")
exten => s,5,Return()

Anschließend muss auf in der Console per SSH in die Instanz gesprungen (lxc-attach -n instanzname) werden. Dort wird im Verzeichnis /etc/asterisk/agi ein neues AGI script angelegt.

#!/bin/bash
nummer=$1
name=$(curl -m 1 --connect-timeout 1 -s "https://mobydick.datazon.de/reverse_oertliche.php?telefonnummer=$nummer")
name=$(echo -e "$name" | sed -e 's/^[ \t]*//')
echo 'SET VARIABLE MDC_LABEL-3 '\"$name\"

Anschließend das AGI script ausführbar machen.

chmod a+x agi_get_oertliche.agi

Die Magie passiert auf dem Webserver. Dieser nimmt die Telefonnummer entgegen und filtert den Namen von der Webseite raus und gibt ihn zurück. Das hat den Grund, wenn dasoertliche.de oder telefonbuch.de die Seite ändern, muss ich nicht bei allen Anlagen das Script aktualisieren, sondern nur an einer zentralen Stelle. Ach und falls das Thema Datenschutz aufkommt. Es werden bei dieser Subdomain keinerlei Logdaten gespeichert.

Das AGI Script für das telefonbuch.de sieht ähnlich aus.

#!/bin/bash
nummer=$1
name=$(curl -m 1 --connect-timeout 1 -s "https://mobydick.datazon.de/reverse_telefonbuch.php?telefonnummer=$nummer")
ort=$(echo -e "$name" | awk -F'|' '{print $2}')
name=$(echo -e "$name" | awk -F'|' '{print $1}')
echo 'SET VARIABLE MDC_LABEL-5 '\"$name\"
echo 'SET VARIABLE MDC_LABEL-6 '\"$ort\"

Das Script gibt zusätzlich noch den Ort des Anrufers zurück.

Gruss

Flo

Okay da sieht ja mal schick aus.
Und wir können jetzt alle den Webserver benutzen? :slight_smile:

Gruss

Markus

Das hatte ich im Skript übersehen…

Ja der Webserver ist frei verfügbar.

Hallo Florian,

vielen, vielen Dank für’s teilen. Auch wenn jetzt derzeit alle den Webserver frei nutzen dürfen: Würdest Du das PHP-Skript des Webservers wohl auch teilen für die, denen nicht wohl dabei ist und die das lieber selbst hosten möchten?

Lieben Gruß
Michael

Das ist ja super, dankeschön!

LG THOMAS

Hi all,

Maybe you can avoid using AGI and use Asterisk curl function. The benefits of this approach are better performance and no need for additional script which can be lost during the backup/restore process. Script would look like (not tested).

exten => s,1,Set(CURLOPT(hashcompat)=yes)
exten => s,2,Set(CURLOPT(httptimeout)=3)
exten => s,3,Set(CURLOPT(conntimeout)=3)
exten => s,4,Set(HASH(curl)=${CURL(https://mobydick.datazon.de/reverse_oertliche.php?telefonnummer=${MDC_CALLER_NUM_NAT})})
exten => s,6,Set(MDC_LABEL-3=${HASH(curl,name)})
exten => s,7,Verbose("=================================")
exten => s,8,Verbose("===>${MDC_LABEL-3}")
exten => s,9,Return()

You need to ensure that response returned by php script is hash compatible

key1=value1&key2=value2

More info you can find on
https://wiki.asterisk.org/wiki/display/AST/Function_CURL
https://wiki.asterisk.org/wiki/display/AST/Function_CURLOPT
https://wiki.asterisk.org/wiki/display/AST/Function_HASH

Kind regards and happy scripting,
Stefan

2 Likes

Hallo Zusammen,

folgend der AGI Skript bei dem das Österreichische Telefonbuch von Herold abgefragt wird, in Anlehnung an den Skript von @florian.schermer

#!/bin/bash
nummer=$1
name=$(curl -m 1 --connect-timeout 1 -s "https://www.herold.at/telefonbuch/telefon_$nummer/")
name=$(echo -e "$name" | grep -Po '<span itemprop="name">\K[^<]*') #Antwort auswerten
if [ "$name" != "" ]; then
        name=$(echo -e "$name" | sed "3!d")             # 3. Zeile auswerten = 1. Teilnehmereintrag   
        echo 'SET VARIABLE MDC_LABEL-13 '\"$name\"      # Label zuweisen
fi

Gruß Reinhard

Gibts hier jemanden der das so erklären kann, das es auch ein nicht Asterisk Spezialist damit zurecht kommt ? Danke. Ich würde das eine sehr interessante Lösung finden (aktuell macht das mein estos via Telefonbuch.de - aber für kunden wär das sehr interessant)

3 Likes

:frowning: leider immer noch keine Lösung gefunden

1 Like