Cannot listen to an asterisk manager event : QueueMemberPause

38 views Asked by At

I am using nest js and asterisk manager for a call-center/CRM software. What i need to do is find out if an extension is on a break by emmiting its status on real time.

    this.ami.on('QueueMemberPause', async (evt) => {
      console.log(1, evt);
    });

    this.ami.on('managerevent', async (evt) => {
      if (evt.interface == 'Local/${exampleExtension}@from-queue/n') {
        console.log(evt);
      }

Here i am listening to 2 events : QueueMemberPaused and managerevent, the manager event reads the condition and logs the evt as :

{
  event: 'QueueMemberPause',
  privilege: 'agent,all',
  queue: '<someQueueNumber>',
  membername: '<someName>',
  interface: 'Local/<someExtension>@from-queue/n',
  stateinterface: 'hint:<someExtension>@ext-local',
  membership: 'static',
  penalty: '0',
  callstaken: '0',
  lastcall: '0',
  lastpause: '<time>',
  incall: '0',
  status: '5',
  paused: '0',
  pausedreason: '',
  ringinuse: '0',
  wrapuptime: '0',
  reason: '<breakReason>'
}

even though the event read from manager event is QueueMemberPause, why is my event listener on QueueMemberPause just above the managerevent not working.

2

There are 2 answers

0
arpandhakal On

Apparently, for listening the event, event names should in in lower case. I don't know this applies for newer versions of Asterisk but this was the case in Asterisk 16. working:

  this.ami.on('queuememberpause', async (evt) => {}) 
0
arheops On

You can make your SDK show all events or just make on asterisk

asterisk -r
manager set debug on

And see all events available.

But your exact SDK(node.js?) may just change event name to be lowercase or upcase.

ps Can confirm that in asterisk source code it is with capitals:

apps/app_queue.c:2191:  return queue_member_to_ami("QueueMemberPause", message);