Ankündigung

Einklappen
Keine Ankündigung bisher.

Asterisk: Sprachansage

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Asterisk: Sprachansage

    Hallo,

    über meine Asterisk VoIP möchte ich gerne Sprachansagen auslösen.

    Mit den Snom Apparaten kann ich Rufnummerabhängig unterschiedliche Wave Dateien einspielen.

    So kommt zum Beispiel beim Klingeln an der Haustür nicht der normale Klingelton der Appartes sondern die Sprachansage: es klingelt an der Haustüre

    Für die welche es interessiert, in die extensions.conf

    exten => s,1,SIPAddHeader("Alert-Info:<http://192.168.x.x/sounds/haustuer.wav>"
    exten => 52,n,Dial(Sip/42&SIP/47)
    .
    .
    eintragen.

    Aber nun zur eigentlichen Frage.

    Ich möchte so auch z.B. Ansagen auslösen, welche nicht wie beim Klingeln nur einen Ruf der Asterisk ausgelöst werden.

    Z.B. würde ich gerne ansagen lassen Sie haben Post.

    dazu sollte ich vom HS einen Ruf initieren können!

    Hat jemand von Euch ggf. dieses Problem schön gelöst??
    Gruß Hartwig

    #2
    Dazu gibt´s die Telefonalarmierung.

    Anzuwählende Rufnummer anlegen und über Befehl (z.B. über Binärauslöser) ausführen lassen. Alarmierung ist erfolgreich, wenn der "Anschluss" nicht besetzt ist.
    Dann analog zu deinem Beispiel einen entsprechenden "Klingelton" im Asterisk hinterlegen.

    Du brauchst halt für jede Situation eine eigene Nummer / einen eigenen Kontext im Asterisk; sollte aber kein Problem sein.
    Gruss aus Radevormwald
    Michel

    Kommentar


      #3
      Anrufalarmierung?

      Böhmische Dörfer!! Meine Asterisk hat eine externe Verbindung zu ISDN und Sipgate. Intern hängt alles an IP.

      Verstehe ich das Richtig, ich soll 2 IP Syteme über ISDN miteinander verbinden?

      Wenn ich die Meldung "Sie haben Post" an das Telefon schicken will, an dem (über Präsenzmelder bekannt) ein User ist sitzt, bräuchte ich bei 10 Räumen 10 Rufnummern!

      Das ist, sollte ich Dich richtig verstanden haben, NICHT SMART
      Gruß Hartwig

      Kommentar


        #4
        Hi
        das snom kann sicherlich autoanswer?
        Ich habe das so gelöst das ich eine 2. Nummer mit Autoanswer eingerichtet habe - und dann per Asterisk diese Nummer anrufe und per playback wav´s abspiele. ich habe dazu hier in den letzten Wochen schon einiges geschrieben - die SuFu sollte helfen und für weitere Fragen stehe ich gerne zur verfügung :-)

        Nachtrag: die Durchsagen werden dann mit ".call files" erzeugt/initiert

        Gruß
        Thorsten

        Kommentar


          #5
          Zitat von hartwigm Beitrag anzeigen
          Intern hängt alles an IP.

          Verstehe ich das Richtig, ich soll 2 IP Syteme über ISDN miteinander verbinden?
          Woher soll ich das wissen?
          ...an das Telefon schicken will, an dem (über Präsenzmelder bekannt) ein User ist sitzt...
          Das hast du auch nicht geschrieben.

          Da SIP aber ein textbasiertes Protokoll ist und man nur ein INVITE an die Zielrufnummer senden muss, könnte das mit HS-Bordmitteln, sprich UDP-Telegramme auch gehen. Mach doch mal einen Wireshark-Mitschnitt und versuche das analog mit IP-Telegrammen nachzubauen.

          Vielleicht hilft diese Lektüre ab Seite 22 oder das: https://knx-user-forum.de/126486-post10.html
          Gruss aus Radevormwald
          Michel

          Kommentar


            #6
            Vielleicht hilft diese Lektüre ab Seite 22 oder das: https://knx-user-forum.de/126486-post10.html

            hatte ich gefunden, ober da ist eine Komponente zu viel dazwischen.
            Ich schalte "virtuelle Ko" vom HS und habe auf dem Linux neben Asterisk noch den eibd und linknx laufen.

            der Linknx wirft mir dann auch ein Script auf dem auf dem Linux an und löst den Anruf aus.

            Aber das ist einfach nicht smart.

            Von der Asterisk aus auf einem Port senden ist recht einfach, der Weg umgekehrt vom HS -> Asterisk noch zu lösen.

            Zu lösen wäre dies m.E. mit einem Baustein wie Ihne eckerho1 für den Squeeze gemacht hat, aber leider reicht mein KnowHow nicht aus das zu realisieren.

            Asterisk manager API - voip-info.org
            Gruß Hartwig

            Kommentar


              #7
              Hi
              das Asterisk Manager-API ist zwar mächtig - aber auch nicht mit einer Zeile bedient!
              Also einfach ein iKo auf die Manager-API zu schicken ist nich
              Auf der anderen Seite ist die Frage was du alles veranstalten willst.
              Der "Umweg" ein IP-Telegram für den Asterisk aufzubereiten (z.B. durch udplisten.sh) ist zwar nicht "smart" - funktioniert aber stabil!
              Also warum nicht nutzten?
              Ob man durch das UDP-Script dann .call-files oder die Manager-API nutzt ist dann wieder offen (ich mache beides: call files für durchsagen, Manager-API für automatische Rufumleitungen).


              Gruß
              Thorsten

              Kommentar


                #8
                Also ich machs aus meiner Visu raus.
                Da läuft ein Dämon, der mit dem EibPC kommuniziert...

                EibPC -UDP-> Visusystem

                Das Visusystem kommuniziert über die entsprechenden APIs auch mit Asterisk.
                Ist allerdings etwas mächtiger als das, was sonst so als "intelligentes Haus" verkauft wird (in dem keine Intelligenz steckt). Der besitzt wirklich künstliche Intelligen :P
                Keine Garantie auf Richtigkeit! Bitte nicht zu Hause nachmachen!

                Kommentar


                  #9
                  @rb
                  Da läuft ein Dämon, der mit dem EibPC kommuniziert...

                  Das ist ja nichts anderes als der udplister.sh den Thosten beschreibt.


                  Mein Wunsch wäre eben eine Standardisierung, also ohne einen Daemon auf Asterisk direkt mit der API zu kommunzieren.

                  @thorsten
                  Kannst Du den udplister.sh mal zur Verfügung stellen, ich habe im Forum das Teil nicht gefunden. Da ich über eibd und linknx muss, wäre das ja schon eine Vereinfachung
                  Gruß Hartwig

                  Kommentar


                    #10
                    Zitat von hartwigm Beitrag anzeigen
                    Mein Wunsch wäre eben eine Standardisierung, also ohne einen Daemon auf Asterisk direkt mit der API zu kommunzieren.
                    Also du brauchst auf jeden Fall eine Software zwischen Asterisk und KNX.
                    Wie willst du sonst mit der API kommunizieren?

                    Ok es WÜRDE gehen, wenn du eine API implementierst, die per KNXNet funktioniert - Sinn macht das nicht!

                    Der Grund warum ich den EibPC nutze ist ganz einfach, dass ich eine zusätzliche Schicht eingezogen habe in mein Projekt. d.h. ich kümmere mich nicht um KNX!

                    Du kannst ja auch direkt aus sowas wie dem EibPC heraus die API von Asterisk aufrufen. Dann musst du allerdings bei Updates/Wechsel vom EibPC weg immer den kompletten Code modifzieren...

                    Ich brauche in meinem Projekt lediglich ein Gerät, was UDP-Nachrichten senden kann. Könnte auch ein HS sein (wenn er das kann)
                    Keine Garantie auf Richtigkeit! Bitte nicht zu Hause nachmachen!

                    Kommentar


                      #11
                      Zitat von hartwigm Beitrag anzeigen
                      Mein Wunsch wäre eben eine Standardisierung, also ohne einen Daemon auf Asterisk direkt mit der API zu kommunzieren
                      Nochmal ein Gedanke:
                      An dem Weg über dem Dämon kommst du nicht vorbei...

                      Wenn du einen Standard willst, dann wäre es aber möglich quasi ein Übersetzerprotokoll zu spezifizieren (d.h. wie KNX für die APIs anderer Systeme "übersetzt" werden soll)...
                      Keine Garantie auf Richtigkeit! Bitte nicht zu Hause nachmachen!

                      Kommentar


                        #12
                        Zitat von hartwigm Beitrag anzeigen
                        @thorsten
                        Kannst Du den udplister.sh mal zur Verfügung stellen, ich habe im Forum das Teil nicht gefunden. Da ich über eibd und linknx muss, wäre das ja schon eine Vereinfachung
                        Hi
                        da du über linknx direkt Kommandozeilen-Befehle absetzen kannst
                        (<action type="shell-cmd" cmd="blbabla" />) kannst du dir UDPListener sparen: einfach direkt die ".call"-files erstellen oder die Asterisk-Manager-Files per Netcat auf die Manager-Schnittstelle posten.

                        Das udplistener.sh ist nur notwendig da der HS direkt kein netcat oder ssh oder ähnliches kann...


                        Hier die relevanten Teile:
                        Code:
                                30)
                                    #Asterisk Durchsagen
                                    NOW=`date +%N`.call
                                    echo "Channel: $par2"                >/tmp/$NOW
                                    echo "Callerid: Durchsage"          >>/tmp/$NOW
                                    echo "Context: Ansagen"             >>/tmp/$NOW
                                    echo "Application: playback"        >>/tmp/$NOW
                                    echo "Data: $par3"                  >>/tmp/$NOW
                                    echo "RetryTime: 2"                 >>/tmp/$NOW
                                    echo "MaxRetries: 20"               >>/tmp/$NOW
                                    scp /tmp/$NOW asterisk:/var/spool/asterisk/outgoing
                                    cp /tmp/$NOW /tmp/last-asterisk.call
                                    rm /tmp/$NOW
                                    ;;
                        Für einen einfachen Kommandozeilenaufruf kannst du die .call-files ja "manuell" erstellen und nur noch die entsprechende Datei per cp bzw. scp in das outgoing-verzeichniss deines Asterisk kopieren.
                        Durch meinen Aufbau kann ich das Zieltelefon ($par2) und den Durchsagetext ($par3) einfach als parameter übergeben.

                        Wie der zugehörige Asterisk-Context aussieht hab ich schonmal gepostet...
                        (->SuFu - wenn du es nicht findest: nochmal melden)

                        Für die Manager-API:
                        Code:
                        netcat asterisk.gehrig.lan 5038 < /opt/udplistener/anwesend.asterisk
                        und die Datei anwesend.asterisk (in diesem Beispiel ändern einer Variable)
                        Code:
                        ACTION: LOGIN
                        USERNAME: sagichnicht
                        SECRET: istgeheim
                        EVENTS: OFF
                        
                        ACTION: SetVar
                        Variable: meinevariable
                        Value: SIP/wohnzimmer&SIP/schlafzimmer
                        
                        ACTION: Logoff
                        Gruß
                        Thorsten

                        Kommentar


                          #13
                          Hallo Thosten,

                          danke für deine Hinweise.


                          Den udplistener habe ich allerdings doch gebraucht, da ich aus dem linknx zwar Scripte starten konnte, nicht aber an das Script einen Parameter übergeben kann.

                          https://knx-user-forum.de/knx-eib-fo...shell-cmd.html


                          Nun starte ich aus dem udplistener.sh ein Script "Durchsage" mit dem Parameter der Nebenstelle und der Nummer der Durchsage.

                          Hier nutze ich deine Vorlage:

                          code:

                          #Asterisk Durchsagen
                          #Parameter Durchsagenummer Apparat
                          NOW=`date +%N`.call
                          echo "Channel: local/42@default" >/tmp/$NOW
                          echo "MaxRetries: 2" >>/tmp/$NOW
                          echo "RetryTime: 10" >>/tmp/$NOW
                          echo "Callerid: Ansage <*$1>" >>/tmp/$NOW
                          echo "Context: default" >>/tmp/$NOW
                          echo "Extension: $2" >>/tmp/$NOW
                          echo "Priority: 1" >>/tmp/$NOW


                          #scp /tmp/$NOW asterisk:/var/spool/asterisk/outgoing
                          cp /tmp/$NOW /var/spool/asterisk/outgoing
                          rm /tmp/$NOW

                          In der Asterisk

                          ;--------------Auf Ansagen pruefen--------------------------
                          exten => s,n,Gosubif($["${CALLERID(num):0:2}" = "*1"]?ansage,1)

                          .
                          .
                          .
                          ;---------------------SUB - ANSAGE--------------------------------------------------
                          ;auf Ansagetexte pruefen
                          exten =>ansage,1,Set(ANSAGENUMMER=ANSAGE${CALLERID(num): 1:3})
                          exten =>ansage,n,noop(${ANSAGENUMMER})

                          ;Ansageetext in die Variable Ansagetext bringen
                          exten =>ansage,n,Set(ANSAGE111=dies-ist-ihr-weckruf.wav)
                          exten =>ansage,n,Set(ANSAGE112=sie-haben-post.wav)

                          exten =>ansage,n,SET(ANSAGEFILE=${${ANSAGENUMMER}})
                          exten =>ansage,n,noop(${ANSAGEFILE})
                          ;nun den Header auf das File setzen
                          exten =>ansage,n,SIPADDHeader(Alert-Info:<http://192.168.9.11/sounds/${ANSAGEFILE})

                          ;----------Klingeldauer---------
                          exten =>ansage,n,SET(KLINGELZEIT=4)

                          exten =>ansage,n,Return()


                          Den Linknx kann ich mir nun einsparen, da ich nun alles über den udplistener machen kann.
                          Gruß Hartwig

                          Kommentar


                            #14
                            da ich immer wieder auch mal suche und auch ältere lösungen gut gebrauchen kann, zu den guten ideen im thread evt. eine alternative:

                            extension die einen sound abspielt und ein einaches "originate" um diesen sound auf eine intercom-gruppe abzuspielen:

                            Stephen's Blog: Bells via Asterisk Paging

                            "asterisk -rx 'originate Local/YYYY@ext-paging extension XXXX@ext-paging'
                            This will originate the page from the YYYY extension, which will play the bell noise and hang up."

                            vg,ozett

                            Kommentar


                              #15
                              war nicht ganz ohne suchen und rumprobieren, aber weils jetzt geht hier mal ein anderer lösungsweg (mit asterisk 1.8 in freepbx)

                              ajam freischalten in /etc/asterisk/http.conf
                              (asterisk mini-http server, der commands über eine url annimmt. Tips)

                              in freepbx kann man Alert-Header nur für incoming und ringgroups im web-interface anlegen, also ringgroup anlegen für "sie haben post", darin die extensions eintragen, die einen klingelton als sprachansage abspielen sollen.

                              dann klingelton für snom-phones auf webserver ablegen und in alert-header die url eintragen: "http://webserver/sie-haben-post.wav"

                              fertig.

                              Abspielen durch KNX-Trigger vom Homeserver:

                              vom Homeserver aus webabfrage auf die ajam-url starten (auf raman als Plain-text, oder auch als xml) (sicheres login)
                              Code:
                              http://192.168.1.1:8088/asterisk/manager?action=login&username=foo&secret=bar
                              http://192.168.1.1:8088/asterisk/manager?command console dial nr-der-ringgroup.
                              --> konkret also (musste wiresharken...;-(  ):
                              http://192.168.1.1:8088/asterisk/manager?action=action=command&action=&command=console+dial+610%40from-internal&username=&secret=
                              tatahhhh. sie haben post.

                              vg,
                              ozett

                              (schöne ansagen kann man hier generieren lassen mit TTS
                              https://acapela-box.com/AcaBox/index.php)

                              Kommentar

                              Lädt...
                              X