Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Contact ID over IP (CID) / Webserver
26-05-2016, 09:29
Beitrag: #8
RE: Contact ID over IP (CID) / Webserver
Ich habe das (mangels PHP-Kentnissen) mit einem relativ simplen bash-Script gelöst. Läuft absolut zuverlässig auf meinem Raspberry.

Voraussetzungen:
- Raspberry Pi mit Asterisk (ich selber verwende IncrediblePBX)
- im Lupus-Panel wird unter "Contact-ID" eingetragen:

rptn://YYYY@IP_des_Raspberry:YYYY
# YYYY = frei wählbarer Port, auf dem der Raspberry lauscht; möglichst oberhalb 1023, da ansonsten root-Rechte nötig sind




auf dem Raspberry:

1. Bash-Script "/root/Alarm.sh"


#!/bin/bash

while true
# Endlosschleife, da diese Bedingung IMMER erfüllt ist

do nc -l -p YYYY < /root/Antwort.txt > /tmp/contact_id.log
# Raspberry lauscht mittels netcat auf dem gewählten Port YYYY und sendet bei eingehenden Nachrichten als Antwort den Inhalt der Datei "/root/Antwort.txt"
# die eingehende Contact-ID-Nachricht wird in der Datei "/tmp/contact_id.log" gespeichert

if cat /tmp/contact_id.log | grep -q "1130"
# diese Log-Datei wird ständig auf das Vorhandensein einer bestimmten Zahlenkombination geprüft
# im Falle einer Meldung wird von XT1 z. B. gesendet: "YYYY 181130000016613" (Syntax der Contact-ID-Meldungen googeln bzw. austesten)

then

datei=$(date +%s%N)
# Sekunden und Nanosekunden seit 1970, um eindeutigen Dateinamen für das Callfile "datei" zu erhalten

echo "Channel: local/<Zielnummer>@from-internal\nMaxRetries: <number>\nRetryTime: <number>\nWaitTime: <number>\ncontext: Alarm\nextension: s\npriority: 1\nSet: MSG=Alarmtext1" > /tmp/$datei.call
# jetzt wird im Verzeichnis "/tmp" ein Asterisk-Callfile angelegt, in dem festgelegt wird, welche Telefonnummer angerufen und welche Sprachnachricht vorgespielt werden soll
# "\n" = Zeilenumbruch
# "context" sowie "extension" je nach eigener Asterisk-Konfiguration evtl. anpassen
# MaxRetries: <number> Die Anzahl der weiteren Wählversuche (falls besetzt oder nicht erreichbar)
# RetryTime: <number> Die Anzahl an Sekunden, die bis zum nächsten Wählversuch gewartet wird (Defaultwert 300 Sekunden)
# WaitTime: <number> Die Anzahl an Sekunden, die das System auf die Annahme des Anrufs warten soll
# "MSG": Name der Audio-Datei mit der gewünschten Sprachnachricht (passend zu Contact-ID "1130") (ohne die Dateiendung!) (Asterisk kann bzgl. Datenrate nur ganz bestimmte Audio-Formate verwenden !)
# diese Audio-Datei (z. B. "Alarmtext1.wav") muß bei meiner Asterisk-Version im Verzeichnis "/var/lib/asterisk/sounds/custom" abgelegt werden; evtl. anpassen!

mv /tmp/$datei.call /var/spool/asterisk/outgoing/
# jetzt wird das fertige call-file verschoben von "/tmp" in "/var/spool/asterisk/outgoing/" und von Asterisk sofort ausgeführt

fi

# je nach Bedarf können jetzt noch zusätzlich bei anderen Contact-ID-Meldungen (statt "1130" z. B. "XXXX") weitere call-files mit den passenden Audio-Dateien "Alarmtext2" usw. erzeugt werden
if cat /tmp/contact_id.log | grep -q "XXXX"
then
datei=$(date +%s%N)
echo "Channel: local/<Zielnummer>@from-internal\nMaxRetries: <number>\nRetryTime: <number>\nWaitTime: <number>\ncontext: Alarm\nextension: s\npriority: 1\nSet: MSG=Alarmtext2" > /tmp/$datei.call
mv /tmp/$datei.call /var/spool/asterisk/outgoing/
fi

done


2. Rechte des Scriptes ändern:

chmod 755 /root/Alarm.sh


3. die als Antwort an die XT1 gesendete Datei "/root/Antwort.txt" erstellen und speichern:

nano /root/Antwort.txt

XX
# Inhalt ist völlig beliebig; ein einzelner Buchstabe / eine Zahl reicht


4. das Script mit jedem Neustart des raspberry durch einen Eintrag in die Datei "/etc/crontab" ausführen:

echo "@reboot root sh /root/Alarm.sh > /dev/null &" >> /etc/crontab


5. Minimalkonfiguration der Extension "Alarm":

[Alarm]
exten => s,1,Answer
exten => s,2,Wait(2)
exten => s,n,Playback(custom/${MSG})
exten => s,n,Hangup

;--== end of [Alarm] ==--;
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Nachrichten in diesem Thema
RE: Contact ID over IP (CID) / Webserver - asteriskuser - 26-05-2016 09:29

Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  LUPUSEC XT-1 DynDns Webserver Port Einstellung izapper 10 26.190 13-01-2014 17:24
Letzter Beitrag: Tomsec



Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste