AWS Polly kein Text zu hören

Hallo,

ich verwende das Modul Telefonansage in Verbindung mit AWS Polly. Der Call kommt immer zustande leider großteils ohne Audio. Ich kann ein Echo hören jedoch wird die Textansage nicht abgespielt. Ich habe den Eindruck als würde der Call bereits aufgebaut werden bevor das Soundfile vorliegt.

Wenn man im Telefonmodul „Anruf starten“ und nach dem Connect auf neben dem Text auf „Schalten“ klickt, dann hört man die Ansage.

Der Aufruf ist durch nachfolgende Funktion implementiert.
TA_StartCallEx(38002, $Rufnummer1, $Ansagetext1);

Fragen:

  • Kann es sein, dass das Soundfile noch nicht fertig ist bevor der Anruf abgesetzt wird?
  • Gibt es da ein Debug welches man aktivieren kann?
  • Kann man für Polly ein Logging aktivieren?

IP-Symcon 6.2
Tinkerboard

09/30/22 19:43:34 | 18419 | DEBUG | ScriptEngine | Executing Event 23371 ~ Sender: Variable
09/30/22 19:43:34 | 00000 | DEBUG | VoIP | ua: using best effort AF: af=AF_INET
09/30/22 19:43:34 | 18419 | DEBUG | ScriptEngine | Executed Event 23371 ~ Sender: Variable ~ Duration: 2 ms
09/30/22 19:43:34 | 00000 | DEBUG | VoIP | call: alloc with params laddr=192.168.128.101, af=AF_INET, use_rtp=1
09/30/22 19:43:34 | 00000 | DEBUG | VoIP | call: use_video=0
09/30/22 19:43:34 | 00000 | DEBUG | VoIP | call: connecting to ‚sip:0043xxxxxx@replacedsipserver.at‘…
09/30/22 19:43:34 | 45106 | DEBUG | ScriptEngine | Executed Event 37255 ~ Sender: Variable ~ Duration: 66 ms
09/30/22 19:43:34 | 18639 | DEBUG | VariableManager | [Alarmanlage\UG\UG Heizraum Paniktaster\Value] = true
09/30/22 19:43:34 | 00000 | DEBUG | VoIP | call: SIP Progress: 100 Trying (/)
09/30/22 19:43:35 | 00000 | DEBUG | VoIP | call: SIP Progress: 180 Ringing (/)
09/30/22 19:43:39 | 00000 | DEBUG | VoIP | call: got SDP answer (235 bytes)
09/30/22 19:43:39 | 00000 | DEBUG | VoIP | sipuser@replacedsipserver.at: Call answered: sip:0043xxxxxx@replacedsipserver.at
09/30/22 19:43:39 | 00000 | DEBUG | VoIP | call: update media
09/30/22 19:43:39 | 00000 | DEBUG | VoIP | stream: update ‚audio‘
09/30/22 19:43:39 | 00000 | DEBUG | VoIP | stream: audio: starting RTCP with remote xx.xx.xx.xx:21887
09/30/22 19:43:39 | 00000 | DEBUG | VoIP | audio: update
09/30/22 19:43:39 | 00000 | DEBUG | VoIP | audio: Set audio decoder: PCMA 8000Hz 1ch
09/30/22 19:43:39 | 00000 | DEBUG | VoIP | audio: start
09/30/22 19:43:39 | 00000 | DEBUG | VoIP | audio: create recv buffer [20 - 160 ms] [320 - 2560 bytes]
09/30/22 19:43:39 | 00000 | DEBUG | VoIP | aubridge: created device ‚pseudo0‘
09/30/22 19:43:39 | 00000 | DEBUG | VoIP | audio: player started with sample format S16LE
09/30/22 19:43:39 | 00000 | DEBUG | VoIP | audio: Set audio encoder: PCMA 8000Hz 1ch
09/30/22 19:43:39 | 00000 | DEBUG | VoIP | audio: start
09/30/22 19:43:39 | 00000 | DEBUG | VoIP | audio: source started with sample format S16LE
09/30/22 19:43:39 | 00000 | DEBUG | VoIP | audio tx pipeline: aubridge —> PCMA
09/30/22 19:43:39 | 00000 | DEBUG | VoIP | audio rx pipeline: aubridge <— PCMA
09/30/22 19:43:39 | 00000 | DEBUG | VoIP | aubridge: thread start: 8000 Hz, 1 channels, format=S16LE
09/30/22 19:43:39 | 00000 | DEBUG | VoIP | call: stream start (active=1)
09/30/22 19:43:39 | 00000 | DEBUG | VoIP | audio: start
09/30/22 19:43:39 | 00000 | DEBUG | VoIP | sipuser@replacedsipserver.at: Call established: sip:0043xxxxxx@replacedsipserver.at
09/30/22 19:43:39 | 00000 | DEBUG | VoIP | stream: incoming rtp for ‚audio‘ established, receiving from xx.xx.xx.xx:21886

Wenn man mittels Script „<?php TA_StartCall(IPS_GetParent($_IPS[„SELF“]));“ ausführt. Dann wird der Call aufgebaut und man hört nur Echo.
Wechselt man im IPS in die Instanzkonfiguration und klickt beim Text auf „SCHALTEN“ dann wird die Ansage abgespielt.

Kann es sein, dass bei meinem ersten Post zum Zeitpunkt des Anrufs der Text noch nicht als Soundfile vorliegt? Ich finde dazu leider auch kein Log.

(Rufnummer ist anonymisiert)

Hallo zusammen,
was ist denn hieraus geworden. Gab es hier eine Lösung? Habe das Problem ebenfalls.

Welche IPS Version verwendest du? Der Fehler wurde bestätigt. Seit dem Upgrade auf 6.3 und einem Delay im Module von 250ms funktioniert es bei mir. Kannst du das Update versuchen und nochmals testen.

Ich benutze schon die 6.3 Version.
Im Modul „Telefonansage“ von @paresy habe ich auf die Zeiten kein Einfluss.

Du musst das direkt im Source anpassen. Ich habe das in folgendem File gemacht /var/lib/symcon/modules/.store/de.symcon.phoneannouncement/Telefonansage/module.php
Wie du unten sehen kannst habe ich ein „usleep(250000);“ eingebaut.

public function MessageSink($timestamp, $senderID, $messageID, $data)
{
    $this->SendDebug('Message Received', json_encode([$senderID, $messageID, $data]), 0);
    // We are only registered to VOIP_EVENT of the defined VoIP instance, so no need to validate $senderID and $messageID
    // $data = [ connectionID, event, data ]
    if ($data[0] === json_decode($this->GetBuffer('CallID'))) {
        switch ($data[1]) {
            case 'Connect':
                if (!$this->checkConfiguration()) {
                    return;
                }
                // Disable close timer and play text
                $this->SetTimerInterval('CloseConnectionTimer', 0);
                // VoIP_Playwave() unterstützt ausschlie~_lich WAV im Format: 16 Bit, 8000 Hz, Mono.
                usleep(250000);
                VoIP_PlayWave($this->ReadPropertyInteger('VoIPInstanceID'), $data[0], TTSAWSPOLLY_GenerateFile($this->ReadPropertyInteger('TTSInstanceID'), $this->GetBuffer('Text')));
                break;

Hat sich erledigt.
Instanz musste neu zugewiesen werden

Ich befürchte eher, dass die eine Timing Problem ist (deswegen ist das Problem auch noch offen, weil nicht optimal nachstellbar)

paresy

Bei mir war auch immer das Problem, dass nach dem 3. Anruf nur noch Echo zu hören war. Ich habe das Modul jetzt wie folgt abgeändert:
Ab Zeile 88.

                    // Disable close timer and play text
                    $this->SetTimerInterval('CloseConnectionTimer', 0);
                    $soundfile = TTSAWSPOLLY_GenerateFile($this->ReadPropertyInteger('TTSInstanceID'), $this->GetBuffer('Text'));
                    usleep(250000);
                    // VoIP_Playwave() unterstützt ausschließlich WAV im Format: 16 Bit, 8000 Hz, Mono.
                    VoIP_PlayWave($this->ReadPropertyInteger('VoIPInstanceID'), $data[0], $soundfile);
                    break;

Seit dieser Änderung hatte ich keine Probleme mehr. Evtl so als Update releasen.

Gz Hannes