2016-08-29 6 views
0

Ich versuche, einen Hangup-Handler in meinem Wählplan hinzuzufügen, um unbeantwortete Anrufe von Wählen mit mehreren Nebenstellen zu fangen. Aber leider werden meine Hangup-Handler überhaupt nicht ausgeführt. Unten ist mein extensions.luaAsterisk Hangup Handler mit lua

CONSOLE = "Console/dsp" -- Console interface for demo 
IAXINFO = "guest"  -- IAXtel username/password 
TRUNK = "SIP" 

GSMTRUNK = "Dongle/dongle0/" 
PRITRUNK = "DAHDI/g0/" 
TRUNKMSD = 1 
local inspect = require ('inspect') 
--from here onwards our logic is there Rajesh 
function dialtomobind(number) 
     app.Dial(GSMTRUNK..number, 50,'egb(add-hangup-handler^'..number..'^1)') 
     local dialstatus = channel['DIALSTATUS']:get() 
     app.NoOp('DIAL STATUS:'..dialstatus) 
     app.Hangup(16) 
end 

function add_hangup_handler(context, extension) 
     channel['hangup_handler_push']='hangup-handlers,s,1' 
     app.NoOp('pre-dial handler, Adding Hangup Handler'..channel['hangup_handler_push']:get()) 
     app.Return() 
end 

function h_handler(context, extension) 
     app.NoOp('After Hangup:'..extension) 
     --app.DumpChan(3) 
end 

function directdialing(c,e) 
     app.Answer(5) 
     app.Playback('tt-monkeys') 
     dialtomobind(string.sub(e, 4)) 
     app.Hangup(16) 
end 


function hangup_handler_1(c,e) 
     --channel['hangup_handler_push'] 
     app.NoOp('Hangup Handler 1 Executed') 
     app.Return() 
end 

extensions = { 
     ['from-internal-sip']={ 
       ['h']=h_handler; 
       ['_500XXXXXXXXXX']=directdialing; 
     }; 
     ['dongle_incoming']={ 
       ['_.']=gsm_dongle_handler; 
     }; 
     ['add-hangup-handler']={ 
       ['_.']=add_hangup_handler; 
     }; 
     ['hangup-handlers']={ 
       ['_.']=hangup_handler_1; 
     }; 
} 

STERNCHEN CLI OUT PUT:

-- Executing [[email protected]:1] Answer("SIP/8884882772-00000047", "5") 
     > 0x7f14c80072a0 -- Probation passed - setting RTP source address to 192.168.2.30:54032 
[Aug 29 18:24:17] NOTICE[26470][C-000000c5]: res_rtp_asterisk.c:4478 ast_rtp_read: Unknown RTP codec 95 received from '192.168.2.30:54032' 
    -- Executing [[email protected]:1] Playback("SIP/8884882772-00000047", "tt-monkeys") 
    -- <SIP/8884882772-00000047> Playing 'tt-monkeys.gsm' (language 'en') 
    -- Executing [[email protected]:1] Dial("SIP/8884882772-00000047", "Dongle/dongle0/8884882772,50,egb(add-hangup-handler^8884882772^1)") 
    -- Dongle/dongle0-010000000e Internal Gosub(add-hangup-handler,8884882772,1) start 
    -- Executing [[email protected]:1] NoOp("Dongle/dongle0-010000000e", "pre-dial handler, Adding Hangup Handlerhangup-handlers,s,1") 
    -- Executing [[email protected]:1] Return("Dongle/dongle0-010000000e", "") 
    == Spawn extension (dongle_incoming, 5008884882772, 1) exited non-zero on 'Dongle/dongle0-010000000e' 
    -- Dongle/dongle0-010000000e Internal Gosub(add-hangup-handler,8884882772,1) complete GOSUB_RETVAL= 
    -- Called Dongle/dongle0/8884882772 
    -- Dongle/dongle0-010000000e is making progress passing it to SIP/8884882772-00000047 
    == Spawn extension (from-internal-sip, 5008884882772, 1) exited non-zero on 'SIP/8884882772-00000047' 
    -- Executing [[email protected]:1] NoOp("SIP/8884882772-00000047", "After Hangup:h") 

Antwort

0
  1. hangup_handler_push ist überhaupt keine Kanalvariable. So kann mit den folgenden Methoden nicht zugegriffen werden.

    channel['hangup_handler_push']='hangup-handlers,s,1' 
    

    oder

    channel['hangup_handler_push']='hangup-handlers,s,1' 
    
  2. für das Einrichten eines Auflege-Handler wir Plan Funktion CHANNEL (https://wiki.asterisk.org/wiki/display/AST/Hangup+Handlers) verwenden wählen. Also unten werden die Methoden funktionieren.

    channel.CHANNEL('hangup_handler_push'):set('hangup-handlers,s,1') 
    
  3. Als Asterisk Set Anwendung kann auch ein Sternchen Funktionen einen Kanal Variablen sowie kann eingestellt werden rufen. Also unten funktioniert auch Code.

    app.Set('CHANNEL(hangup_handler)=hangup-handlers,s,1'); 
    

Referenz: Dial Plan Funktionen Im Lua https://wiki.asterisk.org/wiki/pages/viewpage.action?pageId=16548029

1

Hangup Handler ist Dialplans Handler.

Also, wenn Sie es verwenden möchten, starten Sie OTHER lua Skript bei submited Context/Erweiterung beim Auflegen.

Extension Hangup-Handler, s, 1 müssen gültig sein und existieren.

Sie haben

app.Set('CHANNEL(hangup_handler)=hangup-handlers,s,1'); 

verwenden becuase es nicht variabel ist, es Funktion ist.

+0

Ich habe gültig Zusammenhang mit Catch-all-Erweiterung, aber noch ist es nicht durch Sternchen bezeichnet. Ist mein Code falsch? Oder Lua-Erweiterungen haben keine Fähigkeiten von Hangup-Handler? – rajesh6115

+1

Debug ist kein Thema für SO (siehe Regeln. Versuchen app.Set ('CHANNEL (hangup_handler) = hangup-Handler, s, 1'); – arheops

+0

Danke, app.Set-Methode funktioniert, aber nicht für beide Lua-Kanal-Variable 1) channel.hangup_handler_push = 'hangup-handlers, s' 2) channel ['hangup_handler_push'] = 'hangup-handlers, s' 1 @arheops ändere deine Antwort mit der App.Set-Methode, So das kann ich als richtige Antwort markieren – rajesh6115