Server Anrufen und Skript Auslösen

Jack31081988

Neuer User
Mitglied seit
11 Nov 2015
Beiträge
2
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen,

erstmal vorweg: Ich bin High-Level Software Entwickler (PHP, C#, Java etc.) und habe deswegen kein tiefer gehendes Wissen mit Hardware und noch weniger Ahnung von Telefon-Hardware.

Ich würde gerne folgende Idee Umsetzen:
Ich rufe meinen Server mit meinem Handy (oder anderes Festnetz-Telefon) an. Dieser nimmt den Anruf entgegen und startet dann ein Skript (PHP oder Java) auf den Server. (und spielt dann vielleicht noch eine Sound Datei ab wie: "Vielen Dank Ihr Anrufe wurde registriert")

Allerdings habe ich Probleme an der Stelle, den Anruf überhaupt anzunehmen (Also rein Theoretisch, ich bin ja noch in der Evaluierungs-Phase)

Ich hab z.b. gelesen, dass ich mit Asterisk (genauer: Asterisk Gateway Interface) so etwas möglich sein soll. Allerdings habe ich das Gefühl, dass Asterisk etwas zu overpowered für mein Vorhaben ist. Außerdem würde ich das ganze gerne nicht nur auf einen Linux sondern auch auf einem Windows-Server ausrollen (falls das überhaupt möglich ist)

Jetzt komm ich langsam zu meinen Fragen.

Ist Asterisk zu overkill für mein Vorhaben? gibt es andere Möglichkeiten oder ist Asterisk das einzige?
Welche Software würde es noch geben, welche Anrufe annehmen kann und dann ein Skript anstoßen bzw. eine Sound-Datei vorlesen kann?
Wichtig wäre ebenfalls eine art Authentifizierung, weil ich ja nur die Anrufe von meiner Nummer oder anderen Familien-Mitglieder annehmen möchte.
(Super wäre auch, wenn die Oma Anruf, dass dann eine andere Sound-Datei (bzw. Skript) abgespielt wird, als wenn die Mutti oder Frau anruft)

Wie sieht es Hardware-Seitig aus?
Ich brauche ja ein gerät, mit SIM-Karte, dass die Anrufe entgegen nehmen kann.
Ich kenne mich da leider nicht aus? Ich brauche ja so eine art GSM-Gateway oder GSM Modul
oder sowas ähnliches wie das hier.
Gibt es da State-of-the-Art Hardware?

Ich will nicht blind irgendwas kaufen, ohne zu wissen, ob mir das gerät überhaupt was bringt.

Ob das ganze sinnvoll ist, steht auf einem anderen Blatt (Primär ist da der weg das ziel :D)

Vielen Dank für eure zeit!
 
Zuletzt bearbeitet:
Hallo,
warum ist ein GSM-Gateway nötig? Reicht nicht eine kostenlose Voip-Rufnummer, um angerufen werden zu können?
Falls man schon ein Linux-Gerät hat, z. B. Synology NAS, könnte man auch darauf Asterisk installieren und von dort aus dem Windows-Rechner Befehle schicken.
 
Moins

Mit Asterisk auf einem Raspberry Pi (mit OSMC/KODI) der nur lokal erreichbar ist und einer Fritz!Box die Asterisknumern registriert hat, geht sowas.

Der Asterisk kann dann über die TK-Funktionen der Fritz!Box auch mit einem externen Anruf erreicht werden.
Das geht über Rufumleitung einer angerufenen Nummer auf/über die Asterisknummer.
Intern (lokal) kann über Wahlregeln in der Fritz!Box auf eine Asterisknummer umgeleitet werden.
...oder einem Telefon, welchem eine Asterisknummer zugewiesen wurde.

Skriptmässig kann alles herhalten was auf dem System installiert wurde.
Von Shellskripten über PHP/Perl/Ruby und natürlich auch die Asterisk AGI Skripte und Callfiles.

Für die Ausgabe von deutschen Sprachbausteinen musst du diese allerdings auch installieren/selberbauen.
...die Erfahrung musste ich machen, als ich mir eine deutsche Zeitansage gebastelt habe.

Aber dann hast du alles um dir auch Sprachmenüs zu bauen.
...damit wäre auch eine Smarthomesteuerung über das Telefon denkbar/möglich.
 
Hallo,

vielen Dank für die schnellen Antworten.
dann war meine Annahme, dass ich da irgendwelche fancy Hardware-Module brauche glücklicherweise völlig falsch.

Danke! Eure Antworten, haben mir bei der Evaluierung weitergeholfen :D
Dann geh ich schnell meinen Raspberry Pi ausgraben

Grüße,
Jack
 
Zum Ansporn geb ich dir noch die Zeitansage mit...

/etc/asterisk/extensions.conf
Code:
[Zeitansage]
exten => _X.,30000(Zeitansage),NoOp(Zeitansage: ${EXTEN})
[COLOR=#ff0000]same => n,TrySystem(/etc/asterisk/osmc_notify.sh)[/COLOR]
same  => n,Answer()
same  => n,Wait(1)
same  => n,SayUnixTime(,UTC-1,akM)
same  => n,Return(0)

/etc/asterisk/osmc_notify.sh (mit chmod +x osmc_notify.sh ausführbar machen)
Code:
#!/bin/sh
curl 'http://localhost/jsonrpc?request=\{"jsonrpc":"2.0","method":"GUI.ShowNotification","params":\{"title":"Zeitansage","message":"Anruf"\},"id":1\}'

Im Kontext des Users (Telefonnummer) wird die Zeitansage inkludiert und der Nummer 100 und 200 zugewiesen...
/etc/asterisk/extensions.conf
Code:
[osmc]
include => Zeitansage
; We start with what to do when a call first comes in.
;
exten => s,1,Wait(1)                    ; Wait a second, just for fun
same  => n,Answer                       ; Answer the line
same  => n,Set(TIMEOUT(digit)=5)        ; Set Digit Timeout to 5 seconds
same  => n,Set(TIMEOUT(response)=10)    ; Set Response Timeout to 10 seconds
same  => n(restart),BackGround(demo-congrats)   ; Play a congratulatory message
same  => n(instruct),BackGround(demo-instruct)  ; Play some instructions
same  => n,WaitExten

; # for when they're done with the demo
;
exten => #,1,Playback(demo-thanks)      ; "Thanks for trying the demo"
same  => n,Hangup                       ; Hang them up.

; A timeout and "invalid extension rule"
exten => t,1,Goto(#,1)                  ; If they take too long, give up
exten => i,1,Playback(invalid)          ; "That's not valid, try again"

[COLOR=#ff0000]; Zeitansage
exten => 100,1,Gosub(Zeitansage)
same  => n,Hangup

exten => 200,1,Gosub(Zeitansage)
same  => n,Goto(s,restart)[/COLOR]

Wird die Zeitansage angerufen erscheint auch auf dem Mediacenter (TV/Monitor) eine Dialogbox die darüber informiert.
...benötigt wird: OSMC/KODI mit nachinstallierten Asterisk (apt-get, via SSH).

Ach ja, so oder ähnlich können dann User (Registrare, Telefonnummern) angelegt werden...
/etc/asterisk/sip.conf
Code:
[basic-options](!)                ; a template
        dtmfmode=rfc2833
        [COLOR=#ff0000]context=osmc[/COLOR]
        type=friend

[natted-phone](!,basic-options)   ; another template inheriting basic-options
        directmedia=no
        host=dynamic


; and finally instantiate a few phones
[1000](natted-phone)
callerid=Andrea<1000>
allow=!all,g722,alaw
secret=HIER_DAS_PASSWORT
Wichtig ist hier der richtige context. ;)

Klappt das alles wie es soll, sieht ein Anruf in der Asteriskconsole so aus...
Code:
root@osmc:/etc/asterisk# asterisk -rvvvvv
[Nov 12 14:29:45] Asterisk 11.13.1~dfsg-2+b1, Copyright (C) 1999 - 2013 Digium, Inc. and others.
[Nov 12 14:29:45] Created by Mark Spencer <[email protected]>
[Nov 12 14:29:45] Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
[Nov 12 14:29:45] This is free software, with components licensed under the GNU General Public
[Nov 12 14:29:45] License version 2 and other licenses; you are welcome to redistribute it under
[Nov 12 14:29:45] certain conditions. Type 'core show license' for details.
[Nov 12 14:29:45] =========================================================================
[Nov 12 14:29:45] Connected to Asterisk 11.13.1~dfsg-2+b1 currently running on osmc (pid = 282)
[Nov 12 14:29:58]   == Using SIP RTP CoS mark 5
[Nov 12 14:29:58]     -- Executing [100@osmc:1] Gosub("SIP/1004-00000011", "Zeitansage") in new stack
[Nov 12 14:29:58]     -- Executing [100@osmc:30000] NoOp("SIP/1004-00000011", "Zeitansage: 100") in new stack
[Nov 12 14:29:58]     -- Executing [100@osmc:30001] Answer("SIP/1004-00000011", "") in new stack
[Nov 12 14:29:58]        > 0xb6405560 -- Probation passed - setting RTP source address to 192.168.178.1:7094
[Nov 12 14:29:58]     -- Executing [100@osmc:30002] Wait("SIP/1004-00000011", "1") in new stack
[Nov 12 14:29:59]     -- Executing [100@osmc:30003] SayUnixTime("SIP/1004-00000011", ",UTC-1,akM") in new stack
[Nov 12 14:29:59]     -- <SIP/1004-00000011> Playing 'digits/day-4.gsm' (language 'de')
[Nov 12 14:30:00]     -- <SIP/1004-00000011> Playing 'digits/14.gsm' (language 'de')
[Nov 12 14:30:01]     -- <SIP/1004-00000011> Playing 'digits/oclock.gsm' (language 'de')
[Nov 12 14:30:02]     -- <SIP/1004-00000011> Playing 'digits/9-and.gsm' (language 'de')
[Nov 12 14:30:03]     -- <SIP/1004-00000011> Playing 'digits/20.gsm' (language 'de')
[Nov 12 14:30:03]     -- Executing [100@osmc:30004] TrySystem("SIP/1004-00000011", "/etc/asterisk/osmc_notify.sh") in new stack
[Nov 12 14:30:04]     -- Executing [100@osmc:30005] Return("SIP/1004-00000011", "0") in new stack
[Nov 12 14:30:04]     -- Executing [100@osmc:2] Hangup("SIP/1004-00000011", "") in new stack
[Nov 12 14:30:04]   == Spawn extension (osmc, 100, 2) exited non-zero on 'SIP/1004-00000011'
osmc*CLI>
...über die Asterisknummer 1004, die in der Fritz!Box registriert ist und per Wahlregel die 100 darüber leitet.
So kann dann jedes an der F!B angeschlossene Telefon den Asterisk über Wahlregel erreichen.
 
Zuletzt bearbeitet:

Zurzeit aktive Besucher

Statistik des Forums

Themen
246,162
Beiträge
2,247,158
Mitglieder
373,688
Neuestes Mitglied
Alf777
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.