Asterisk 13.22.0 - No channel type registered for 'Agent' when queue rings

2.5k views Asked by At

With the below config, I just keep gettings this in the Asterisk 13.22.0 CLI:

WARNING[15872][C-00000051]: channel.c:6343 ast_request: No channel type registered for 'Agent'

whenever a caller gets sent to that agent queue with logged in agents waiting for calls on Asterisk 13.

3997 and 3998 are my two agents. They can call each other and receive calls from other extensions. They can phone out of my PBX, no problems.

My agents.conf:

[agents](!)
autologoff=15
wrapuptime=5000
custom_beep=beep

[3997](agents)
fullname=>AGENT 1

[3998](agents)
fullname=>AGENT 2

My queues.conf:

[testq]
musicclass = default
strategy = leastrecent
timeout = 10
retry = 5
autofill = yes

member => Agent/3997,0,3997,hint:3997@default,no
member => Agent/3998,0,3998,hint:3998@default,no

Also, setting ringinuse on (change member line above to have "yes" at the end) has no effect except to make the error "No channel type..." appear twice in the 13.22.0 CLI per external ring heard by caller, instead of once per external ring if ringinuse is set to "no" in the two lines above.

Logging in an agent in extensions.conf is done by:

exten=>1007,1,NoOp(Login agent from ${CALLERID(num)})
 same=>n,Set(MONITOR_OPTIONS=b)
 same=>n,UnpauseQueueMember(,Agent/${CALLERID(num)})
 same=>n,AgentLogin(${CALLERID(num)},s)

Queue show with agents logged in:

localhost*CLI> queue show
testq has 0 calls (max unlimited) in 'leastrecent' strategy (0s holdtime, 0s talktime), W:0, C:0, A:16, SL:0.0% within 0s
   Members:
      3997 (Agent/3997 from hint:3997@default) (ringinuse disabled) (In use) has taken no calls yet
      3998 (Agent/3998 from hint:3998@default) (ringinuse disabled) (In use) has taken no calls yet
   No Callers
localhost*CLI>

Then, if the queue is called from outside:

localhost*CLI> queue show
testq has 1 calls (max unlimited) in 'leastrecent' strategy (0s holdtime, 0s talktime), W:0, C:0, A:16, SL:0.0% within 0s
   Members:
      3997 (Agent/3997 from hint:3997@default) (ringinuse disabled) (In use) has taken no calls yet
      3998 (Agent/3998 from hint:3998@default) (ringinuse disabled) (In use) has taken no calls yet
   Callers:
      1. SIP/3916-00000055 (wait: 0:08, prio: 0)

3916 is never answered, and neither 3997 or 3998 receive the call, both continuing with MOH indefinitely.

Constantly on the CLI this comes up, timed with each ring of 3916 (the "outside" phone):

taken no calls yet
   Callers:
      1. SIP/3916-00000055 (wait: 0:08, prio: 0)

localhost*CLI>
[Aug  2 10:37:39] WARNING[16925][C-00000056]: channel.c:6343 ast_request: No channel type registered for 'Agent'
[Aug  2 10:37:44] WARNING[16925][C-00000056]: channel.c:6343 ast_request: No channel type registered for 'Agent'
[Aug  2 10:37:49] WARNING[16925][C-00000056]: channel.c:6343 ast_request: No channel type registered for 'Agent'

What am I doing wrong?

The expectation is that either 3997 or 3998 will receive the incoming call placed by SIP/3916. As of now, 3916 rings forever, and 3997 and 3998 just play MOH forever, with the above error emitted with each ring heard on 3916 / externally.

Thanks!

Stefan

1

There are 1 answers

0
Stefan On

Found the solution for this...!

https://wiki.asterisk.org/wiki/display/AST/New+in+12#Newin12-channels_chan_agent

and

https://reviewboard.asterisk.org/r/2657/diff/1/

and

https://blogs.asterisk.org/2016/02/10/converting-from-chan_agent-to-app_agent_pool/

clarifies the situation. After Asterisk 12, chan_agent was removed from Asterisk.

It has been replaced with the AgentRequest application.

So I had to adapt my previously posted configs as follows to get queued agents working and answering incoming calls to the queue.

My agents.conf stayed unchanged from my original post.

My queues.conf had to change from my original post to:

member=>Local/3997@internal,,3997,Agent:3997 
member=>Local/3998@internal,,3998,Agent:3998

with the rest of the queue settings remaining the same.

The agent login extension had to change to:

exten=>1007,1,NoOp(Login agent from ${CALLERID(num)})
 same=>n,Set(MONITOR_OPTIONS=b)
 same=>n,UnpauseQueueMember(,Local/${CALLERID(num)}@internal)
 same=>n,AgentLogin(${CALLERID(num)},s)

In my [internal] context (where my phones live - including my test phones 3997 and 3998) I had to add extensions that would call the AgentRequest() dialplan application on each of them if that extension was dialled. This is effectively how the queue is answered:

[internal]
.
.
.
exten=>3997,1,AgentRequest(3997)
 same=>n,Hangup()

exten=>3998,1,AgentRequest(3998)
 same=>n,Hangup()
.
.
.

Then I set up a testing extension in [internal] called '48' that would trigger the queue and let me test:

[internal]
.
.
.
exten=>48,1,NoOp(Sending test call to testq)
same=>n,Queue(testq,trhc)
.
.
.

So, my test procedure was:

  1. Phone 1007 on phone 3997 (1007 - see my original post - is my agent login extension that calls AgentLogin on the dialing extension.) This logs me into the queue 'testq' as Agent 3997.

  2. Phone 1007 on phone 3998. This logs me into the queue 'testq' as Agent 3998.

  3. Phone 48 from any other phone, which calls the Queue application on the testq, which is defined in queues.conf as consisting of agents / phones 3997 and 3998.

  4. Due to my queue being set to " strategy = leastrecent" on repeated calls to extension 48, either 3997 or 3998 would pick up calls made.

This is exactly the functionality desired and I now have a working model of Agent queues in Asterisk 13 using the new (to me) app_agent_pool interface via AgentRequest instead of trying to use "chan_agent" which no longer exists post Asterisk 12.

All that is now needed is to GOTO from my incoming extension to local,48,1 or simply do Queue(testq,trhc) from my incoming extension directly. If I have logged in agents in the testq queue, the most least recently dialled agent will get connected to the caller.

Maybe this helps someone transition from a pre Asterisk 12 to Asterisk 12 or higher.

Kind regards,

Stefan