-
Notifications
You must be signed in to change notification settings - Fork 133
/
README
78 lines (66 loc) · 2.87 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
==============================================
Asterisk script to query WolframAlpha
==============================================
This AGI script submits queries to WolframAlpha, parses the data it
gets and returns the answer as a dialplan variable that can be
played back to the user.
------------
Requirements
------------
Perl The Perl Programming Language
perl-libwww The World-Wide Web library for Perl
perl-XML::Simple XML API module for Perl.
An app ID from http://products.wolframalpha.com/api
Internet access in order to contact WolframAlpha and get the data.
If you plan to use SSL you will need to install the 'IO-Socket-SSL' Perl module
that implements an interface to SSL sockets.
------------
Installation
------------
To install copy wolfram.agi to your agi-bin directory.
Usually this is /var/lib/asterisk/agi-bin/
To make sure check your /etc/asterisk/asterisk.conf file
-----
Usage
-----
agi(wolfram.agi,"text")
Submits the text string as a query to WolframAlpha Computational Knowledge Engine.
The retrieved answer is set as an asterisk dialplan variable named "wolfram_answer".
--------
Examples
--------
sample dialplan code for your extensions.conf. In this example the user
dictates his question on the phone and hears back the answer.
(it also uses googletts.agi and speech-recog.agi AGI scripts for
speech synthesis and recognition):
;WolframAlpha query demo:
exten => 1237,1,Answer()
exten => 1237,n,agi(googletts.agi,"What is your question?",en)
;;Record the question and render it to text:
exten => 1237,n(record),agi(speech-recog.agi,en-US)
exten => 1237,n,GotoIf($[$["${status}" = "0"] & $["${confidence}" > "0.8"]]?success:retry)
;;Submit the question to wolfram:
exten => 1237,n(success),agi(wolfram.agi,"${utterance}")
;;Playback the answer:
exten => 1237,n,agi(googletts.agi,"${wolfram_answer}",en)
exten => 1237,n,goto(end)
;;Retry in case speech recognition wasn't successful:
exten => 1237,n(retry),agi(googletts.agi,"Can you please repeat more clearly?",en)
exten => 1237,n,goto(record)
exten => 1237,n(end),Hangup()
-----------------------
Security Considerations
-----------------------
This script contacts Wolfram servers in order send the query data and get back the
answers. If you feel that the data you exchange with Wolfram are sensitive or you want to
make sure that no 3rd party can eavesdrop your communication with the Wolfram service
it is advised to enable the use of SSL in the script. This will encrypt all the traffic
between your pbx and Wolframs servers making it much safer.
To enable the use of SSL set the variable '$use_ssl' to 1 in the script. Keep in mind that
security comes with a price, the initialisation of the SSL session adds a small delay in
communication (usually under 1 sec).
-------
License
-------
The speech-recog script for asterisk is distributed under the GNU General Public
License v2. See COPYING for details.