Koozali.org: home of the SME Server
Obsolete Releases => SME VoIP (Asterisk, SAIL etc) => Topic started by: ldkeen on February 07, 2007, 12:27:39 PM
-
I'm trying to get this http://www.voip-info.org/wiki/view/Perl-AustralianWeather Application working with SAIL but must be doing something wrong or I can't work out how to interact with the selintra agi properly. I modified the script so that 5111 will be my local weather report then copied the bom.agi into the correct directory and checked permissions then I created two custom apps - one for the macro and one for the number to access the application (as per the instructions) but keep getting "That number is not valid". Something like this:
exten => 5111,1,Answer()
exten => 5111,2,Wait(1)
exten => 5111,3,AGI(bom.agi)
exten => 5111,4,Hangup
used to work around version 2.1.13 but doesn't work with 2.1.14-344. Anyone have any ideas how to make this work?
Regards, Lloyd
-
Hi Lloyd
Hows it going mate? - Don't mention the bloody cricket :evil:
If you are getting number invalid then it's probably not getting anywhere near the agi script. This may well be to do with the fact that Sam tightened up all the context handling in a later version of 2.1.14 (can't remember the release).
Can you send me a verbose console log of the event? That would help a lot and also the extensions.conf so I can see where it's put your custom apps?
Also - if it is getting into your perl agi can you turn on agi debugging?
agi debug
agi no debug
Best Regards
Jeff
-
Hi Jeff,
Don't mention the bloody cricket
Well they're still a rough chance at the one day final. NOT (Sorry I couldn't resist that)
extensions.conf
;#------------------------------------------------------------
;# DO NOT MODIFY THIS FILE! It is updated automatically by the
;# SAIL & SME Server software. Instead, modify the source template in
;# an /etc/e-smith/templates-custom directory. For more
;# information, see http://www.e-smith.org/custom/
;#
;# copyright (C) 2005 Selintra Ltd. United Kingdom
;#------------------------------------------------------------
;extensions.conf
[general]
static=yes ; These two lines prevent the command-line interface
writeprotect=yes ; from overwriting the config file. Leave them here.
[globals]
FAX=5001
SYSOP=5000
DYNAMIC_FEATURES=>automon
#include extensions_hud.conf
;
; Customer supplied Globals & Header data
;
TESTGLOBAL=15
;
; End of Customer supplied Globals & Header data
;
[internal]
include => parkedcalls
include => internal-presets
include => extensions
include => conferences
include => VM-Alias
include => applicationWeather
include => custom-local
include => hint
exten => _X.,1,agi(selintra,OutCluster,${EXTEN})
[default]
include => parkedcalls
include => internal-presets
include => extensions
include => conferences
exten => _700x,1,agi(selintra,OutRoute,Brisbane Office)
exten => _200x,1,agi(selintra,OutRoute,PAS)
exten => _8888xxxx,1,agi(selintra,OutRoute,astra)
exten => _11,1,agi(selintra,OutRoute,astra)
exten => _13xxxx,1,agi(selintra,OutRoute,astra)
exten => _3XXX,1,agi(selintra,OutRoute,dave)
exten => _xxxxxxxxxx,1,agi(selintra,OutRoute,local)
exten => _79X.,1,agi(selintra,OutTrunk,0288471578)
exten => _75X.,1,agi(selintra,OutTrunk,09120217)
exten => _80X.,1,agi(selintra,OutTrunk,88163155)
exten => _77X.,1,agi(selintra,OutTrunk,88885611)
exten => _78X.,1,agi(selintra,OutTrunk,88885761)
exten => _61X.,1,agi(selintra,OutTrunk,Zap3-1)
exten => _62X.,1,agi(selintra,OutTrunk,Zap4-1)
exten => _86X.,1,agi(selintra,OutTrunk,gabbaguru)
exten => _87X.,1,agi(selintra,OutTrunk,serverguru)
exten => _84X.,1,agi(selintra,OutTrunk,smeguru)
exten => t,1,Hangup
exten => h,1,Hangup
exten => i,1,Background(invalid)
exten => i,2,Hangup
;
[extensions]
include => internal-presets
exten => 0,1,Goto(${SYSOP},1) ; accept zero as operator request
exten => 5000,hint,SIP/5000
exten => 5000,1,agi(selintra,InCall,)
exten => 5000,1,Goto(extensions,5000,1)
exten => 5001,hint,SIP/5001
exten => 5001,1,agi(selintra,InCall,)
exten => 5001,1,Goto(extensions,5001,1)
exten => 5002,hint,SIP/5002
exten => 5002,1,agi(selintra,InCall,)
exten => 5002,1,Goto(extensions,5002,1)
exten => 5009,hint,SIP/5009
exten => 5009,1,agi(selintra,InCall,)
exten => 5009,1,Goto(extensions,5009,1)
exten => o,1,Background(pbx-transfer)
exten => t,1,Hangup
exten => h,1,Hangup
exten => i,1,Background(invalid) ; That's not valid, try again
exten => i,2,Hangup
[queues]
exten => 5000,1,agi(selintra,Dial,5000,queue)
exten => 5001,1,agi(selintra,Dial,5001,queue)
exten => 5002,1,agi(selintra,Dial,5002,queue)
exten => 5009,1,agi(selintra,Dial,5009,queue)
exten => t,1,Hangup
exten => h,1,Hangup
exten => i,1,Background(invalid) ; That's not valid, try again
exten => i,2,Hangup
[vmails]
exten => s,1,GoToIf($["$VMAIL" = "External"]?3)
exten => s,2,Voicemail(su$EXTEN)
exten => s,3,Macro(stdtrunk,$EXTEN,voicemail)
[vmailr]
exten => *50*,2,VoicemailMain($CALLERIDNUM)
exten => X.,1,Voicemail(su$EXTEN)
[conferences]
exten => _30[0-7],1,Meetme(${EXTEN},Mp)
[mainmenu]
include => extensions
include => custom-local
exten => 0288471578,1,agi(selintra,Inbound,${EXTEN})
exten => 09120217,1,agi(selintra,Inbound,${EXTEN})
exten => 88163155,1,agi(selintra,Inbound,${EXTEN})
exten => 88885611,1,agi(selintra,Inbound,${EXTEN})
exten => 88885761,1,agi(selintra,Inbound,${EXTEN})
exten => s-Zap3-1,1,agi(selintra,Inbound,Zap3-1)
exten => s-Zap4-1,1,agi(selintra,Inbound,Zap4-1)
exten => gabbaguru,1,agi(selintra,Inbound,${EXTEN})
exten => serverguru,1,agi(selintra,Inbound,${EXTEN})
exten => smeguru,1,agi(selintra,Inbound,${EXTEN})
exten => s,1,GotoIf($["${CHANNEL}" = "Zap/3-1"]?s-Zap3-1,1)
exten => s,2,GotoIf($["${CHANNEL}" = "Zap/4-1"]?s-Zap4-1,1)
exten => s,3,agi(selintra,CheckState,)
exten => fax,1,GoToIf($["$FAX" = ""]?3:2) ;no FAX defined - hangup
exten => fax,2,GoTo(extensions,${FAX},1)
exten => fax,3,Congestion
exten => fax,4,Hangup
exten => t,1,GotoIf($["${OPEN}" = "YES"]?t,4)
exten => t,2,Voicemail(su${SYSOP})
exten => t,3,Hangup
exten => t,4,Goto(extensions,${SYSOP},1)
exten => t,5,Hangup
exten => h,1,Hangup
exten => i,1,Background(invalid) ;
exten => i,2,Hangup
[default-inbound]
include => extensions
include => internal-presets
exten => fax,1,GoToIf($["${FAX}" = ""]?3:2) ;no FAX defined - hangup
exten => fax,2,GoTo(extensions,${FAX},1)
exten => fax,3,Congestion
exten => fax,4,Hangup
exten => t,1,GotoIf($["${OPEN}" = "YES"]?t,4)
exten => t,2,Voicemail(su${CLUSTEROP})
exten => t,3,Hangup
exten => t,4,Goto(extensions,${CLUSTEROP},1)
exten => t,5,Hangup
exten => h,1,Hangup
exten => i,1,Background(invalid) ; "That's not valid, try again"
exten => i,2,Hangup
[internal-presets]
;
exten => 5300,1,agi(selintra,Alias,SIP/5000 SIP/5002,${EXTEN})
;
exten => _*XX*,1,agi(selintra,${EXTEN})
exten => _*XX*X,1,agi(selintra,${EXTEN})
exten => _*XX*XX,1,agi(selintra,${EXTEN})
exten => _*XX*XXXX,1,agi(selintra,${EXTEN})
exten => _*XX*XXXXX.,1,agi(selintra,${EXTEN})
exten => _*XX8,1,agi(selintra,${EXTEN})
exten => _*XX8X,1,agi(selintra,${EXTEN})
exten => _*XX8XX,1,agi(selintra,${EXTEN})
exten => _*XX8XXXX,1,agi(selintra,${EXTEN})
exten => _*XX8XXXXX.,1,agi(selintra,${EXTEN})
exten => h,1,Hangup
exten => t,1,Hangup
exten => i,1,Playback(invalid)
[defaultOpenGreet]
include => extensions
include => internal-presets
include => conferences
exten => s,1,Background(if-u-know-ext-dial)
exten => s,2,Background(otherwise)
exten => s,3,Background(pls-hold-while-try)
exten => s,4,Background(silence/3)
exten => s,5,Goto(defaultOpenGreet,t,1)
exten => t,1,Goto(extensions,${SYSOP},1) ;to operator
exten => t,2,Hangup
exten => i,1,Background(invalid)
exten => i,2,Goto(defaultOpenGreet,s,4)
[defaultClosedGreet]
include => extensions
include => internal-presets
include => conferences
exten => s,1,Background(were-sorry)
exten => s,2,Background(nbdy-avail-to-take-call)
exten => s,3,Background(if-u-know-ext-dial)
exten => s,4,Background(otherwise)
exten => s,5,Background(pls-hold-while-try)
exten => s,6,Background(silence/3)
exten => s,7,Goto(defaultClosedGreet,t,1)
exten => t,1,Goto(extensions,${CLUSTEROP},1) ;to operator
exten => t,2,Hangup
exten => i,1,Background(invalid)
exten => i,2,Goto(defaultClosedGreet,s,6)
[customOpenGreet]
include => extensions
include => internal-presets
include => conferences
exten => s,1,Background(${CUSTOMGREET})
exten => s,2,Background(silence/3)
exten => s,3,Goto(customOpenGreet,t,1)
exten => t,1,Goto(extensions,${SYSOP},1) ;to operator
exten => t,2,Hangup
exten => i,1,Background(invalid)
exten => i,2,Goto(customOpenGreet,s,2)
[customClosedGreet]
include => extensions
include => internal-presets
include => conferences
exten => s,1,Background(${CUSTOMGREET})
exten => s,2,Background(silence/1)
exten => s,3,Goto(customClosedGreet,t,1)
exten => t,1,Voicemail(s${CLUSTEROP}) ;to operator
exten => t,2,Hangup
exten => i,1,Background(invalid)
exten => i,2,Goto(customClosedGreet,s,2)
;
;#####################################################################
;
; Customer Supplied Contexts below this line (if any).
;
;#####################################################################
;
;
; Customer Supplied Context VM-Alias
;
[VM-Alias]
exten => _5600,1,agi(selintra,*50*);
;
; Customer Supplied Context applicationWeather
;
[applicationWeather]
exten => 5111,1,Answer()
exten => 5111,2,Wait(1)
exten => 5111,3,AGI(bom.agi)
exten => 5111,4,Hangup();
;
; Customer Supplied Context custom-local
;
[custom-local]
exten => _NXXXXXXX,1,Goto(02${EXTEN},1)
exten => _02NXXXXXXX,1,agi(selintra,OutRoute,local);
;
; Customer Supplied Context hint
;
[hint]
exten => 5000,hint,SIP/5000
exten => 5001,hint,SIP/5001
exten => 5002,hint,SIP/5002
exten => 5003,hint,SIP/5003
exten => 5004,hint,SIP/5004;
And here is the console output:
-- Executing AGI("SIP/5000-b7e03090", "selintra|OutCluster|5111") in new stack
-- Launched AGI Script /var/lib/asterisk/agi-bin/selintra
-- AGI Script selintra completed, returning 0
-- Sent into invalid extension '5111' in context 'default' on SIP/5000-b7e03090
-- Executing BackGround("SIP/5000-b7e03090", "invalid") in new stack
-- Playing 'invalid' (language 'en')
-- Executing Hangup("SIP/5000-b7e03090", "") in new stack
-- Executing Hangup("SIP/5000-b7e03090", "") in new stack
It looks like SAIL is not including the custom apps in the "default" context. So I created 2 new custom apps as per the instructions
[applicationWeather]
macro-applicationWeather
exten => s,1,Answer()
exten => s,2,Wait(1)
exten => s,3,AGI(bom.agi)
exten => s,4,Hangup()
[5111]
exten => _511.,1,Macro(applicationWeather)
- but this time I manually added 2 lines to extensions.conf:
[default]
...
include => applicationWeather
include => 5111
....
Manually restarted asterisk and here is what I got:
-- Executing AGI("SIP/5000-b7e0e838", "selintra|OutCluster|5111") in new stack
-- Launched AGI Script /var/lib/asterisk/agi-bin/selintra
-- AGI Script selintra completed, returning 0
-- Executing Macro("SIP/5000-b7e0e838", "applicationWeather") in new stack
Feb 8 09:00:54 WARNING[29369]: app_macro.c:149 macro_exec: No such context 'macro-applicationWeather' for macro 'applicationWeather'
== Parsing '/etc/asterisk/manager.conf': Found
== Manager 'fop' logged on from 127.0.0.1
-- Timeout on SIP/5000-b7e0e838
== CDR updated on SIP/5000-b7e0e838
-- Executing Hangup("SIP/5000-b7e0e838", "") in new stack
== Spawn extension (default, t, 1) exited non-zero on 'SIP/5000-b7e0e838'
-- Executing Hangup("SIP/5000-b7e0e838", "") in new stack
== Spawn extension (default, h, 1) exited non-zero on 'SIP/5000-b7e0e838'
Another method seems to progress even further but then hangs up:
Custom App:
[applicationWeather]
exten => 5111,1,Answer()
exten => 5111,2,Wait(1)
exten => 5111,3,AGI(bom.agi)
exten => 5111,4,Hangup()
extensions.conf
...
[default]
include => applicationWeather
...
Console output
-- Executing AGI("SIP/5000-09ecb100", "selintra|OutCluster|5111") in new stack
-- Launched AGI Script /var/lib/asterisk/agi-bin/selintra
-- AGI Script selintra completed, returning 0
-- Executing Answer("SIP/5000-09ecb100", "") in new stack
-- Executing Wait("SIP/5000-09ecb100", "1") in new stack
-- Executing AGI("SIP/5000-09ecb100", "bom.agi") in new stack
-- Launched AGI Script /var/lib/asterisk/agi-bin/bom.agi
-- AGI Script bom.agi completed, returning 0
-- Executing Hangup("SIP/5000-09ecb100", "") in new stack
== Spawn extension (default, 5111, 4) exited non-zero on 'SIP/5000-09ecb100'
-- Executing Hangup("SIP/5000-09ecb100", "") in new stack
== Spawn extension (default, h, 1) exited non-zero on 'SIP/5000-09ecb100'
This one is actually launching the script but then hangs up after a couple of seconds? Any ideas? (About the script that is - not the cricket :-))
Many Thanks
Lloyd
-
Also - if it is getting into your perl agi can you turn on agi debugging
Here's the AGI debug info as well:
AGI Debugging Enabled
-- Executing AGI("SIP/5000-09ec0140", "selintra|OutCluster|5111") in new stack
-- Launched AGI Script /var/lib/asterisk/agi-bin/selintra
AGI Tx >> agi_request: selintra
AGI Tx >> agi_channel: SIP/5000-09ec0140
AGI Tx >> agi_language: en
AGI Tx >> agi_type: SIP
AGI Tx >> agi_uniqueid: 1170887025.2
AGI Tx >> agi_callerid: 5000
AGI Tx >> agi_calleridname: 5000
AGI Tx >> agi_callingpres: 0
AGI Tx >> agi_callingani2: 0
AGI Tx >> agi_callington: 0
AGI Tx >> agi_callingtns: 0
AGI Tx >> agi_dnid: 5111
AGI Tx >> agi_rdnis: unknown
AGI Tx >> agi_context: internal
AGI Tx >> agi_extension: 5111
AGI Tx >> agi_priority: 1
AGI Tx >> agi_enhanced: 0.0
AGI Tx >> agi_accountcode:
AGI Tx >>
AGI Rx << SET PRIORITY 1
AGI Tx >> 200 result=0
AGI Rx << SET EXTENSION 5111
AGI Tx >> 200 result=0
AGI Rx << SET CONTEXT default
AGI Tx >> 200 result=0
-- AGI Script selintra completed, returning 0
-- Executing Answer("SIP/5000-09ec0140", "") in new stack
-- Executing Wait("SIP/5000-09ec0140", "1") in new stack
-- Executing AGI("SIP/5000-09ec0140", "bom.agi") in new stack
-- Launched AGI Script /var/lib/asterisk/agi-bin/bom.agi
AGI Tx >> agi_request: bom.agi
AGI Tx >> agi_channel: SIP/5000-09ec0140
AGI Tx >> agi_language: en
AGI Tx >> agi_type: SIP
AGI Tx >> agi_uniqueid: 1170887025.2
AGI Tx >> agi_callerid: 5000
AGI Tx >> agi_calleridname: 5000
AGI Tx >> agi_callingpres: 0
AGI Tx >> agi_callingani2: 0
AGI Tx >> agi_callington: 0
AGI Tx >> agi_callingtns: 0
AGI Tx >> agi_dnid: 5111
AGI Tx >> agi_rdnis: unknown
AGI Tx >> agi_context: default
AGI Tx >> agi_extension: 5111
AGI Tx >> agi_priority: 3
AGI Tx >> agi_enhanced: 0.0
AGI Tx >> agi_accountcode:
AGI Tx >>
-- AGI Script bom.agi completed, returning 0
-- Executing Hangup("SIP/5000-09ec0140", "") in new stack
== Spawn extension (default, 5111, 4) exited non-zero on 'SIP/5000-09ec0140'
-- Executing Hangup("SIP/5000-09ec0140", "") in new stack
== Spawn extension (default, h, 1) exited non-zero on 'SIP/5000-09ec0140'
Regards Lloyd
-
Hmmm
You've got me thinking now....
I'll have a mess around with this tomorrow. Custom apps rarely get used in the field (unless we write them) so there could well be a bug there. However, it looks like asterisk may not be finding your agi - have a look in the asterisk messages log. If you look at our AGI you can see it setting values (it's setting up a jump to extension 5111 as a result of the "OutCluster|5111" call)...
AGI Rx << SET PRIORITY 1
AGI Tx >> 200 result=0
AGI Rx << SET EXTENSION 5111
AGI Tx >> 200 result=0
AGI Rx << SET CONTEXT default
yours is just ending with no apparent activity. Did you stop and restart asterisk after you loaded the agi into the directory?
Kind Regards
Jeff
-
Jeff,
It looks like the script is running but maybe I don't have some of the sounds:
From the bom.agi
### Whats the barometric reading?
if($bar!~/-/){
$AGI->exec("Playback barometric");
$AGI->say_digits($bar);sleep 1;
$AGI->exec("Playback hectopascal");sleep 1;
I'm pretty sure I don't have "barometric" or "hectopascal"
Just doing some more checking - I'll follow up.
Lloyd
-
Yeah but you would see a trace of it trying to play them if the agi were executing....
Best
-
Ah getting close now. Had to strip out the carriage returns from bom.agi using dos2unix and install perl module Asterisk::AGI. Now I think it's bombing out on IOSocket.
I changed bom.agi from
use IOSocket; use Asterisk
To:
use IO::Socket; use Asterisk::AGI
Here's the latest:
AGI Debugging Enabled
-- Executing AGI("SIP/5000-0937bec0", "selintra|OutCluster|5111") in new stack
-- Launched AGI Script /var/lib/asterisk/agi-bin/selintra
AGI Tx >> agi_request: selintra
AGI Tx >> agi_channel: SIP/5000-0937bec0
AGI Tx >> agi_language: en
AGI Tx >> agi_type: SIP
AGI Tx >> agi_uniqueid: 1170891681.16
AGI Tx >> agi_callerid: 5000
AGI Tx >> agi_calleridname: 5000
AGI Tx >> agi_callingpres: 0
AGI Tx >> agi_callingani2: 0
AGI Tx >> agi_callington: 0
AGI Tx >> agi_callingtns: 0
AGI Tx >> agi_dnid: 5111
AGI Tx >> agi_rdnis: unknown
AGI Tx >> agi_context: internal
AGI Tx >> agi_extension: 5111
AGI Tx >> agi_priority: 1
AGI Tx >> agi_enhanced: 0.0
AGI Tx >> agi_accountcode:
AGI Tx >>
AGI Rx << SET PRIORITY 1
AGI Tx >> 200 result=0
AGI Rx << SET EXTENSION 5111
AGI Tx >> 200 result=0
AGI Rx << SET CONTEXT default
AGI Tx >> 200 result=0
-- AGI Script selintra completed, returning 0
-- Executing Answer("SIP/5000-0937bec0", "") in new stack
-- Executing Wait("SIP/5000-0937bec0", "1") in new stack
-- Executing AGI("SIP/5000-0937bec0", "bom.agi") in new stack
-- Launched AGI Script /var/lib/asterisk/agi-bin/bom.agi
AGI Tx >> agi_request: bom.agi
AGI Tx >> agi_channel: SIP/5000-0937bec0
AGI Tx >> agi_language: en
AGI Tx >> agi_type: SIP
AGI Tx >> agi_uniqueid: 1170891681.16
AGI Tx >> agi_callerid: 5000
AGI Tx >> agi_calleridname: 5000
AGI Tx >> agi_callingpres: 0
AGI Tx >> agi_callingani2: 0
AGI Tx >> agi_callington: 0
AGI Tx >> agi_callingtns: 0
AGI Tx >> agi_dnid: 5111
AGI Tx >> agi_rdnis: unknown
AGI Tx >> agi_context: default
AGI Tx >> agi_extension: 5111
AGI Tx >> agi_priority: 3
AGI Tx >> agi_enhanced: 0.0
AGI Tx >> agi_accountcode:
AGI Tx >>
AGI Rx << EXEC Playback national-weather-service ""
-- AGI Script Executing Application: (Playback) Options: (national-weather-service)
-- Playing 'national-weather-service' (language 'en')
AGI Tx >> 200 result=0
AGI Rx << EXEC Playback letters/p ""
-- AGI Script Executing Application: (Playback) Options: (letters/p)
-- Playing 'letters/p' (language 'en')
AGI Tx >> 200 result=0
AGI Rx << EXEC Playback letters/e ""
-- AGI Script Executing Application: (Playback) Options: (letters/e)
-- Playing 'letters/e' (language 'en')
AGI Tx >> 200 result=0
AGI Rx << EXEC Playback letters/n ""
-- AGI Script Executing Application: (Playback) Options: (letters/n)
-- Playing 'letters/n' (language 'en')
AGI Tx >> 200 result=0
AGI Rx << EXEC Playback letters/r ""
-- AGI Script Executing Application: (Playback) Options: (letters/r)
-- Playing 'letters/r' (language 'en')
AGI Tx >> 200 result=0
AGI Rx << EXEC Playback letters/i ""
-- AGI Script Executing Application: (Playback) Options: (letters/i)
-- Playing 'letters/i' (language 'en')
AGI Tx >> 200 result=0
AGI Rx << EXEC Playback letters/t ""
-- AGI Script Executing Application: (Playback) Options: (letters/t)
-- Playing 'letters/t' (language 'en')
AGI Tx >> 200 result=0
AGI Rx << EXEC Playback letters/h ""
-- AGI Script Executing Application: (Playback) Options: (letters/h)
-- Playing 'letters/h' (language 'en')
AGI Tx >> 200 result=0
AGI Rx << EXEC Playback one-moment-please ""
-- AGI Script Executing Application: (Playback) Options: (one-moment-please)
-- Playing 'one-moment-please' (language 'en')
AGI Tx >> 200 result=0
-- AGI Script bom.agi completed, returning 0
-- Executing Hangup("SIP/5000-0937bec0", "") in new stack
== Spawn extension (default, 5111, 4) exited non-zero on 'SIP/5000-0937bec0'
-- Executing Hangup("SIP/5000-0937bec0", "") in new stack
== Spawn extension (default, h, 1) exited non-zero on 'SIP/5000-0937bec0'
Lloyd
-
Finally nailed it. There was an unfortunate line wrap in the code on the website:
Was:
$tcp=IOSocket
INET->new(PeerAddr=>"www.bom.gov.au",PeerPort=>80,Proto=>tcp,Timeout=>5);
Had to change to:
$tcp=IO::Socket::INET->new(PeerAddr=>"www.bom.gov.au",PeerPort=>80,Proto=>tcp,Timeout=>5);
Sorry to be a pain. But still having problems creating the initial extension because the custom app isn't included in the default context.
Thanks for all your help.
BTW, FYI Here are the latest weather conditions for Sydney. You can pass it on to the National cricket side if you want :-))
AGI Debugging Enabled
== Spawn extension (default, h, 1) exited non-zero on 'SIP/5000-093792d0'
-- Executing AGI("SIP/5000-093792d0", "selintra|OutCluster|5111") in new stack
-- Launched AGI Script /var/lib/asterisk/agi-bin/selintra
AGI Tx >> agi_request: selintra
AGI Tx >> agi_channel: SIP/5000-093792d0
AGI Tx >> agi_language: en
AGI Tx >> agi_type: SIP
AGI Tx >> agi_uniqueid: 1170893726.22
AGI Tx >> agi_callerid: 5000
AGI Tx >> agi_calleridname: 5000
AGI Tx >> agi_callingpres: 0
AGI Tx >> agi_callingani2: 0
AGI Tx >> agi_callington: 0
AGI Tx >> agi_callingtns: 0
AGI Tx >> agi_dnid: 5111
AGI Tx >> agi_rdnis: unknown
AGI Tx >> agi_context: internal
AGI Tx >> agi_extension: 5111
AGI Tx >> agi_priority: 1
AGI Tx >> agi_enhanced: 0.0
AGI Tx >> agi_accountcode:
AGI Tx >>
AGI Rx << SET PRIORITY 1
AGI Tx >> 200 result=0
AGI Rx << SET EXTENSION 5111
AGI Tx >> 200 result=0
AGI Rx << SET CONTEXT default
AGI Tx >> 200 result=0
-- AGI Script selintra completed, returning 0
-- Executing Answer("SIP/5000-093792d0", "") in new stack
-- Executing Wait("SIP/5000-093792d0", "1") in new stack
-- Executing AGI("SIP/5000-093792d0", "bom.agi") in new stack
-- Launched AGI Script /var/lib/asterisk/agi-bin/bom.agi
AGI Tx >> agi_request: bom.agi
AGI Tx >> agi_channel: SIP/5000-093792d0
AGI Tx >> agi_language: en
AGI Tx >> agi_type: SIP
AGI Tx >> agi_uniqueid: 1170893726.22
AGI Tx >> agi_callerid: 5000
AGI Tx >> agi_calleridname: 5000
AGI Tx >> agi_callingpres: 0
AGI Tx >> agi_callingani2: 0
AGI Tx >> agi_callington: 0
AGI Tx >> agi_callingtns: 0
AGI Tx >> agi_dnid: 5111
AGI Tx >> agi_rdnis: unknown
AGI Tx >> agi_context: default
AGI Tx >> agi_extension: 5111
AGI Tx >> agi_priority: 3
AGI Tx >> agi_enhanced: 0.0
AGI Tx >> agi_accountcode:
AGI Tx >>
AGI Rx << EXEC Playback national-weather-service ""
-- AGI Script Executing Application: (Playback) Options: (national-weather-service)
-- Playing 'national-weather-service' (language 'en')
AGI Tx >> 200 result=0
AGI Rx << EXEC Playback letters/p ""
-- AGI Script Executing Application: (Playback) Options: (letters/p)
-- Playing 'letters/p' (language 'en')
AGI Tx >> 200 result=0
AGI Rx << EXEC Playback letters/e ""
-- AGI Script Executing Application: (Playback) Options: (letters/e)
-- Playing 'letters/e' (language 'en')
AGI Tx >> 200 result=0
AGI Rx << EXEC Playback letters/n ""
-- AGI Script Executing Application: (Playback) Options: (letters/n)
-- Playing 'letters/n' (language 'en')
AGI Tx >> 200 result=0
AGI Rx << EXEC Playback letters/r ""
-- AGI Script Executing Application: (Playback) Options: (letters/r)
-- Playing 'letters/r' (language 'en')
AGI Tx >> 200 result=0
AGI Rx << EXEC Playback letters/i ""
-- AGI Script Executing Application: (Playback) Options: (letters/i)
-- Playing 'letters/i' (language 'en')
AGI Tx >> 200 result=0
AGI Rx << EXEC Playback letters/t ""
-- AGI Script Executing Application: (Playback) Options: (letters/t)
-- Playing 'letters/t' (language 'en')
AGI Tx >> 200 result=0
AGI Rx << EXEC Playback letters/h ""
-- AGI Script Executing Application: (Playback) Options: (letters/h)
-- Playing 'letters/h' (language 'en')
AGI Tx >> 200 result=0
AGI Rx << EXEC Playback one-moment-please ""
-- AGI Script Executing Application: (Playback) Options: (one-moment-please)
-- Playing 'one-moment-please' (language 'en')
AGI Tx >> 200 result=0
AGI Rx << EXEC Playback recorded ""
-- AGI Script Executing Application: (Playback) Options: (recorded)
-- Playing 'recorded' (language 'en')
AGI Tx >> 200 result=0
AGI Rx << EXEC Playback at ""
-- AGI Script Executing Application: (Playback) Options: (at)
-- Playing 'at' (language 'en')
AGI Tx >> 200 result=0
AGI Rx << SAY NUMBER 10 ""
-- Playing 'digits/10' (language 'en')
AGI Tx >> 200 result=0
AGI Rx << EXEC Playback letters/a ""
-- AGI Script Executing Application: (Playback) Options: (letters/a)
-- Playing 'letters/a' (language 'en')
AGI Tx >> 200 result=0
AGI Rx << EXEC Playback letters/m ""
-- AGI Script Executing Application: (Playback) Options: (letters/m)
-- Playing 'letters/m' (language 'en')
AGI Tx >> 200 result=0
AGI Rx << EXEC Playback temperature ""
-- AGI Script Executing Application: (Playback) Options: (temperature)
-- Playing 'temperature' (language 'en')
AGI Tx >> 200 result=0
AGI Rx << EXEC Playback is-currently ""
-- AGI Script Executing Application: (Playback) Options: (is-currently)
-- Playing 'is-currently' (language 'en')
AGI Tx >> 200 result=0
AGI Rx << SAY NUMBER 26 ""
-- Playing 'digits/20' (language 'en')
-- Playing 'digits/6' (language 'en')
AGI Tx >> 200 result=0
AGI Rx << EXEC Playback degrees ""
-- AGI Script Executing Application: (Playback) Options: (degrees)
-- Playing 'degrees' (language 'en')
AGI Tx >> 200 result=0
AGI Rx << EXEC Playback minimum ""
-- AGI Script Executing Application: (Playback) Options: (minimum)
-- Playing 'minimum' (language 'en')
AGI Tx >> 200 result=0
AGI Rx << SAY NUMBER 9 ""
-- Playing 'digits/9' (language 'en')
AGI Tx >> 200 result=0
AGI Rx << EXEC Playback degrees ""
-- AGI Script Executing Application: (Playback) Options: (degrees)
-- Playing 'degrees' (language 'en')
AGI Tx >> 200 result=0
AGI Rx << EXEC Playback wind ""
-- AGI Script Executing Application: (Playback) Options: (wind)
-- Playing 'wind' (language 'en')
AGI Tx >> 200 result=0
AGI Rx << EXEC Playback south ""
-- AGI Script Executing Application: (Playback) Options: (south)
-- Playing 'south' (language 'en')
AGI Tx >> 200 result=0
AGI Rx << EXEC Playback at ""
-- AGI Script Executing Application: (Playback) Options: (at)
-- Playing 'at' (language 'en')
AGI Tx >> 200 result=0
AGI Rx << SAY NUMBER 008 ""
-- Playing 'digits/8' (language 'en')
AGI Tx >> 200 result=0
AGI Rx << EXEC Playback knots ""
-- AGI Script Executing Application: (Playback) Options: (knots)
-- Playing 'knots' (language 'en')
AGI Tx >> 200 result=0
AGI Rx << EXEC Playback humidity ""
-- AGI Script Executing Application: (Playback) Options: (humidity)
-- Playing 'humidity' (language 'en')
AGI Tx >> 200 result=0
AGI Rx << SAY NUMBER 66 ""
-- Playing 'digits/60' (language 'en')
-- Playing 'digits/6' (language 'en')
AGI Tx >> 200 result=0
AGI Rx << EXEC Playback percent ""
-- AGI Script Executing Application: (Playback) Options: (percent)
-- Playing 'percent' (language 'en')
AGI Tx >> 200 result=0
AGI Rx << EXEC Playback thank-you-for-calling ""
-- AGI Script Executing Application: (Playback) Options: (thank-you-for-calling)
-- Playing 'thank-you-for-calling' (language 'en')
AGI Tx >> 200 result=0
-- AGI Script bom.agi completed, returning 0
-- Executing Hangup("SIP/5000-093792d0", "") in new stack
== Spawn extension (default, 5111, 4) exited non-zero on 'SIP/5000-093792d0'
-- Executing Hangup("SIP/5000-093792d0", "") in new stack
== Spawn extension (default, h, 1) exited non-zero on 'SIP/5000-093792d0'
Regards, Lloyd
-
26 degrees??? - 26 degrees????
Jeez, I'm freezing my nuts off here at -5C. What with that and the cricket I'm rapidly losing the will to live.
I've just been playing with custom apps and I think you've found a hole big enough to drive a bus through. Traditionally, every outbound action (i.e. anything generated by an extension) went through a context called "internal". Now, it would seem that when we built clusters, this stopped happening. So, the result is that at the moment, a custom app can only be driven from a trunk; either directly or via an IVR.
This sucks.
Frankly, I'm amazed that no-one has spotted it before. However, as I said in a previous, not many people have occasion to use custom apps because SAIL does most things "out of the box".
This needs a fix.
I'm tempted to just include the custom app context in the default cluster context but I think it needs something a bit more subltle than that.
Anyway - we'll have a fix for you shortly. In the meantime you'll just have to bodge an include into default each time you do a commit.
Sorry mate but I can't help but think you deserve it for taking the piss over the cricket... :wink:
Very best
Jeff
-
Hi Lloyd
Try this....
I've put up 414 onto the download site. It allows you to assign a custom-app to a cluster.
You'll have to install smeserver-asterisk-1.2.10-2 from contribs because this release (and 412) needed a change to to asterisk (see release note if you are curious as to why).
Best
Jeff
ps - 1:0 - cricket - bloody hell, we took one!
:-)
-
Hi i just have started a New topic on this you were talking about, I didnt find this post earlier. So I opened a new one:
http://forums.contribs.org/index.php?topic=36851.0
Didn't know it was a bug... Was this ever fixed? on which versions? Is there a permanent walk around?
Has any one been able to call custom app from an extension, on new releases?
I am using:
smeserver-asterisk-1.2.10-5.i686.rpm
smeserver-asterisk-sounds-1.2.2-2.noarch.rpm
smeserver-asterisk-zappri-MPP-1.2.6-5.i686.rpm
selintra-sail-2.1.14-406.noarch.rpm
-
Hi
It was fixed in 419 and some example custome-apps were included in 421 and subsequent releases.
Kind Regards
Selintra
-
Sorry but Im having trouble knowing and getting which is the latest stable realease... I thought I have downloaded the latest release... how can we know on the future which is te latest release, and where to get it?
by the way thank you! I was spending a lot of time solving an already solved issue.