Da mich das immer ärgert, wenn man auf der Internetsuche endlich einen Thread findet, der eine Lösung verspricht und dieser mit "Problem gelöst" aber nicht wie es gemacht wurde, endet, so hier die Vorgehensweise, wo es bei mir endlich funktioniert hat.
Auf der Fritzbox muss ein Telefon -> LAN/WLAN (IP-Telefon) mit Bezeichnung SAS und einem
KENNWORT angelegt werden. Der von der Fritzbox vergebene Benutzername ist im folgenden Beispiel
621. Ggf. muss dies unten bei differierendem Wert angepasst werden.
Folgende Pakete habe ich dafür auf dem Pi installiert:
(alles als root)
Code:
apt-get -y install asterisk-prompt-de
apt-get -y install espeak
apt-get -y install ffmpeg
Nun folgende Dateien bearbeiten:
/etc/asterisk/sip.conf
Code:
;
; SIP Configuration for Asterisk
;
[general]
language=de
tonezone=de
context=default
allowoverlap=no
udpbindaddr=0.0.0.0
tcpenable=no
tcpbindaddr=0.0.0.0
transport=udp
srvlookup=yes
register => [SIZE=3][B][COLOR=#008000]621[/COLOR][/B][/SIZE]:[SIZE=3][COLOR=#0000ff][B]KENNWORT[/B][/COLOR][/SIZE]@[SIZE=3][B][COLOR=#0000ff]IPDERFRITZBOX[/COLOR][/B][/SIZE]:5060/[SIZE=3][B][COLOR=#008000]621[/COLOR][/B][/SIZE]
[authentication]
[gateway](!)
description=Fritz!Box Registrar
context=sastalk
call-limit=15
type=friend
insecure=invite
nat=force_rport,comedia
fromdomain=fritz.box
secret=[SIZE=3][B][COLOR=#0000ff]KENNWORT[/COLOR][/B][/SIZE]
host=[SIZE=3][COLOR=#0000ff][B]IPDERFRITZBOX[/B][/COLOR][/SIZE]
canreinvite=yes
directmedia = no
dtmfmode=rfc2833
allow=!all,g722,alaw,ulaw
[fbgateway](gateway)
defaultuser=[SIZE=3][B][COLOR=#008000]621[/COLOR][/B][/SIZE]
fromuser=[SIZE=3][B][COLOR=#008000]621[/COLOR][/B][/SIZE]
(
blau muss mit den eigenen Angaben ersetzt werden. Obiger Text ersetzt die bestehende Konfigurationsdatei)
/etc/asterisk/extensions.conf
(dies muss am Ende hinzugefügt werden)
Code:
[sastalk]
exten => s,1(start),NoOp(${CHANNEL} ${CALLERID(all)} ruft ${EXTEN})
same => n,Answer()
same => n,Wait(1)
same => n,Playback(play)
same => n,Wait(1)
same => n(exit),Hangup()
Nun am besten asterisk neu starten:
Code:
service asterisk stop
service asterisk start
...oder einmalig...
Nun ein kleines Skript, welches den Bau und das Verschieben der Call-Datei automatisch erledigt:
/bin/telefoniere
Code:
#!/bin/bash
rm /usr/share/asterisk/sounds/de/playx.wav 2>/dev/null >/dev/null
rm /usr/share/asterisk/sounds/de/play.wav 2>/dev/null >/dev/null
echo -e "Channel: SIP/$1@fbgateway\nCallerid: SaS\nContext: sastalk\nExtension: s\nArchive: no" >/etc/asterisk/hallo.call
espeak -v german-mbrola-7 "$2" -w /usr/share/asterisk/sounds/de/playx.wav 2>/dev/null >/dev/null
ffmpeg -i /usr/share/asterisk/sounds/de/playx.wav -ar 8000 -ac 1 /usr/share/asterisk/sounds/de/play.wav 2>/dev/null >/dev/null
mv /etc/asterisk/hallo.call /var/spool/asterisk/outgoing/hallo.call 2>/dev/null >/dev/null
Die Datei muss mit
Code:
chmod 0777 /bin/telefoniere
ausführbar gemacht werden.
Nun kann diese mit
Code:
telefoniere "[SIZE=3][B][COLOR=#0000ff]NUMMER[/COLOR][/B][/SIZE]" "[SIZE=3][B][COLOR=#0000ff]ZU SPRECHENDER TEXT[/COLOR][/B][/SIZE]"
aufgerufen werden. Die Nummer wird angerufen und beim Annehmen des Gespräches wird der angegebene Text gesprochen und wieder aufgelegt.
Ein Beispiel für intern:
Code:
telefoniere "**610" "Hallo, dies ist ein Test. "
Auf der internen Nummer 610 wird angerufen und beim Annehmen wird "Hallo, dies ist ein Test." gesprochen und wieder aufgelegt.
Ein Beispiel für extern:
Code:
telefoniere "0049VORWAHLOHNE0RUFNUMMER" "Hallo, dies ist ein Testanruf. "
Auf der externen Nummer Länderkennung Deutschland (49) wird angerufen und beim Annehmen wird "Hallo, dies ist ein Testanruf." gesprochen und wieder aufgelegt.
Sinn und Zweck der Übung ist es, z. B. mit SAS und einem psgbs bei einem Sensorereignis eine Nummer anzurufen und dies mitzuteilen.