[erledigt] app_swift asterisk 1.4.28

Kelldaran

Neuer User
Mitglied seit
18 Apr 2010
Beiträge
5
Punkte für Reaktionen
0
Punkte
0
app_swift ignoriert die optionen und spricht sie einfach mit.Egal welchen delimiter (,|) ich verwende.
Hallo,
ich setze bei einigen AGI Scripten die TTS von Cepstral ein. Ich bin dann auf app_swift gestoßen welches die Sache vereinfachen soll weil man nicht erst mit swift ein Soundfile erstellen und dann mit Streamfile und Konsorten abspielen muss und dadurch die Pause zwischen Soundfile erstellen und abspielen einspart
Unter core show application swift heiß es:
This application streams tts audio from the Cepstral swift engine and
will alternatively read DTMF into the ${SWIFT_DTMF} variable if the timeout
and digits options are used.

Syntax: Swift(text[|timeout in ms][|maximum digits])
Das klappt auch wunderbar wenn man einfach nur einen Text gesprochen haben will.
Also:
exten =>1234,1,Answer()
exten =>1234,n,swift(Irgendwann wirds auch wieder Sommer)
exten =>1234,n,Hangup
Wenn ich das aber so mache
exten =>1234,n,swift(Wann wirds wieder Sommer?|2000|2)
Dann liest er das timeout und die maximum digits einfach mit vor.
Ich habe natürlich statt der Pipe (|) auch das Komma probiert.leider ohne Erfolg.
Hat jemand eine Idee?
Gruß Daniel

Ich bin jetzt schon ein bißchen weitergekommen:
In der extensions.conf kann ich immer noch keine Optionen übergeben aber in AGI-Scripten funktioniert es. Ich benutze python und als Bibliothek habe ich pyst eingebunden.
Da gibt es eine Methode appexec('application','options') die hervorragend funktioniert.
Das sieht dann so aus:
appexec('Swift','Irgendwann wird es wieder Sommer')
Ist wirklich Klasse weil der Text fast ohne Pause erstellt und wiedergegeben wird. Man kann dem zu sprechenden String auch Formatierungstags mitgeben was in der extensions.conf nicht geht. Das sieht dann so aus.
appexec('Swift',"glaubt irgendjemand <break time='200ms' /> dass es jemals wieder Sommer wird)
Mann darf in dem String allerdings kein Komma und keine Pipe nutzen da hiermit dann das Timeout und die Maxdigits angegeben werden.
man kann dann mit get_variable('SWIFT_DTMF') die zurückgegebenen DTMF Töne abfragen:
appexec('Swift',"glaubt irgendjemand <break time='200ms' /> dass es jemals wieder Sommer wird,2000,2)
x=get_variable('SWIFT_DTMF')
Leider kann ich app_swift trotzdem nicht einsetzten da es häufig zu einem Speicherzugriffsfehler kommt wenn während der Ansage aufgelegt wird und sich dann auch der Asterisk beendet.:(
 
Zuletzt bearbeitet:
Kostenlos!

Statistik des Forums

Themen
248,886
Beiträge
2,303,956
Mitglieder
378,564
Neuestes Mitglied
warumdas