Koozali.org: home of the SME Server

SAIL with Perl AustralianWeather

Offline ldkeen

  • *
  • 405
  • +0/-0
SAIL with Perl AustralianWeather
« 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:
Code: [Select]
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

Offline SARK devs

  • *****
  • 2,806
  • +1/-0
    • http://sarkpbx.com
SAIL with Perl AustralianWeather
« Reply #1 on: February 07, 2007, 09:19:40 PM »
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

Offline ldkeen

  • *
  • 405
  • +0/-0
SAIL with Perl AustralianWeather
« Reply #2 on: February 07, 2007, 11:18:13 PM »
Hi Jeff,

Quote from: "selintra"
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
Code: [Select]
;#------------------------------------------------------------
;# 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:

Code: [Select]
   -- 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
Code: [Select]
[applicationWeather]
macro-applicationWeather
exten => s,1,Answer()
exten => s,2,Wait(1)
exten => s,3,AGI(bom.agi)
exten => s,4,Hangup()

Code: [Select]
[5111]
exten => _511.,1,Macro(applicationWeather)

 - but this time I manually  added 2 lines to extensions.conf:
Code: [Select]
[default]
...
include => applicationWeather
include => 5111
....

Manually restarted asterisk and here is what I got:
Code: [Select]
   -- 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:
Code: [Select]
[applicationWeather]
exten => 5111,1,Answer()
exten => 5111,2,Wait(1)
exten => 5111,3,AGI(bom.agi)
exten => 5111,4,Hangup()

extensions.conf
Code: [Select]
...
[default]
include => applicationWeather
...

Console output
Code: [Select]
   -- 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

Offline ldkeen

  • *
  • 405
  • +0/-0
SAIL with Perl AustralianWeather
« Reply #3 on: February 07, 2007, 11:27:02 PM »
Quote from: "selintra"
Also - if it is getting into your perl agi can you turn on agi debugging

Here's the AGI debug info as well:
Code: [Select]
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

Offline SARK devs

  • *****
  • 2,806
  • +1/-0
    • http://sarkpbx.com
SAIL with Perl AustralianWeather
« Reply #4 on: February 07, 2007, 11:42:37 PM »
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)...  
Code: [Select]
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

Offline ldkeen

  • *
  • 405
  • +0/-0
SAIL with Perl AustralianWeather
« Reply #5 on: February 07, 2007, 11:46:48 PM »
Jeff,
It looks like the script is running but maybe I don't have some of the sounds:
From the bom.agi
Code: [Select]
### 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

Offline SARK devs

  • *****
  • 2,806
  • +1/-0
    • http://sarkpbx.com
SAIL with Perl AustralianWeather
« Reply #6 on: February 08, 2007, 12:16:04 AM »
Yeah but you would see a trace of it trying to play them if the agi were executing....

Best

Offline ldkeen

  • *
  • 405
  • +0/-0
SAIL with Perl AustralianWeather
« Reply #7 on: February 08, 2007, 12:50:39 AM »
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
Code: [Select]
use IOSocket; use Asterisk
To:
Code: [Select]
use IO::Socket; use Asterisk::AGI
Here's the latest:
Code: [Select]
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

Offline ldkeen

  • *
  • 405
  • +0/-0
SAIL with Perl AustralianWeather
« Reply #8 on: February 08, 2007, 01:23:18 AM »
Finally nailed it. There was an unfortunate line wrap in the code on the website:
Was:
Code: [Select]
$tcp=IOSocket
INET->new(PeerAddr=>"www.bom.gov.au",PeerPort=>80,Proto=>tcp,Timeout=>5);

Had to change to:
Code: [Select]
$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 :-))
Code: [Select]
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

Offline SARK devs

  • *****
  • 2,806
  • +1/-0
    • http://sarkpbx.com
SAIL with Perl AustralianWeather
« Reply #9 on: February 08, 2007, 10:51:59 AM »
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

Offline SARK devs

  • *****
  • 2,806
  • +1/-0
    • http://sarkpbx.com
SAIL with Perl AustralianWeather
« Reply #10 on: February 10, 2007, 06:44:01 PM »
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!

:-)

yorchis

Custom app confined to be called by a Trunk or IVR?
« Reply #11 on: May 05, 2007, 07:30:09 AM »
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

Offline SARK devs

  • *****
  • 2,806
  • +1/-0
    • http://sarkpbx.com
SAIL with Perl AustralianWeather
« Reply #12 on: May 05, 2007, 10:12:16 AM »
Hi

It was fixed in 419 and some example custome-apps were included in 421 and subsequent releases.


Kind Regards

Selintra

yorchis

Latest stable release
« Reply #13 on: May 07, 2007, 06:50:41 AM »
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.