Broadcast messages with Elastix’s Call Center Module

Hi people, this is my first appearence at this blog, by way of a small introduction  my name is Juan Pablo Bustos and I’m writing from Mendoza – Argentina, I’m a Systems Analyst and also I have my ECT Certification.

I’ve been talking with Rafael about publishing this method, and he suggested to share it in the Elastix Blog, so that’s why I’ve have published it, so we can polish it and see a way to implement it on a larger scale.

The objective of this implementation is to use Elastix’s dialer to call a list of customers to deliver a message and to be able to still use the Call Center with “real” agents. I have also added a little PHP script that logs the customer’s answer (number dialed) after the call is completed.

To get this to work, we need to create:

- Some “virtual agents” that are created in the same way as the “real” agents in the  Call Center’s GUI.

- A Custom Context to log them in with the command AgentCallbackLogin (sadly deprecated in Asterisk 1.6 , but able to be worked around).

- Another Custom Context to log them (for debugging purposes, but useful sometimes).

- A Custom Context to redirect the calls to a final custom context that will handle the calls.

It seems a little tricky, but with a few Custom Contexts you’ll be able to use a feature that is requested very often.

Now the question is, why “virtual” agents ? The answer is pretty simple, I needed to keep Call Center’s original functionality.

As you may noticed the way that Elastix’s dialer, before dialing, polls for the available agents, that’s why we are using AgentCallbackLogin, and to make it call.

So the overview of the process will be something like this:

1) We create the agent with the Call Center’s GUI.

2)  We delete the password of the agent at the file

In etc/asterisk/agents.conf , it will be something like this:
Agent prototype: agent => [Agent ID],[password],[Agent’s Name]

[agents]

Agent => 1001,,Virtual 1

Agent => 1002,,Virtual 2

Agent => 1003,,Virtual 3

Agent => 1004,,Virtual 4


3)  We create a Custom Context to login our virtual agent at extensions_custom.conf:

The prototype for AgentCallbackLogin is this:
AgentCallbackLogin([AgentNo][|Options[|exten[@context]]])

[login-agents]

exten => 1111,1,Answer

exten => 1111,n,NoOp(Logging Agents)

exten => 1111,n,AgentCallbackLogin(1001,s,501 at from-internal)

exten => 1111,n,AgentCallbackLogin(1002,s,502 at from-internal)

exten => 1111,n,AgentCallbackLogin(1003,s,503 at from-internal)

exten => 1111,n,AgentCallbackLogin(1004,s,504 at from-internal)

exten => 1111,n,NoOp(All Logged)

exten => 1111,n,Hangup()

4) We create a “Catch” extension to pick up all the calls directed to our virtual agents:

[catchcalls]

exten => 501,1, Goto(amessage,s,1)

exten => 502,1, Goto(amessage,s,1)

exten => 503,1, Goto(amessage,s,1)

exten => 504,1, Goto(amessage,s,1)

5) Finally we create the Custom Context to deliver the message:

[amessage]

exten => s,1,Answer

exten => s,2,Wait,2

exten => s,n,Read(tmp,custom/message1,1||1|5)

exten => s,n,Set(RESP=${tmp})

exten => s,n,Playback(thank-you-cooperation)

exten => s,n,Hangup()

exten => h,1,DeadAGI(llamadas.php,${RESP})

As you may notice if you want to store the answer in the case of a poll or similar, you can store the answer using the command read instead of playback, and once the call is finished call a script to handle the answer.

6)  Create a queue where you’ll put your virtual agents.

7) Create an outgoing campaign and start burning minutes!

For this implementation I used Elastix 1.5.2 and Call Center 1.5 with 50 virtual agents and it works like a charm.

I hope you weren’t bored if this mini guide is kind of basic or by my English.

Thanks for reading it and I hope It’ll be useful

  • Share/Bookmark

Tags: , , , , , , , ,

24 Responses to “Broadcast messages with Elastix’s Call Center Module”

  1. van Says:

    Juan Pablo, genial explicacion muy sencilla y aunque no he probado de seguro funcionara, el asunto es que mencionas un script en php (llamadas.php), pero no lo anexas.

  2. Juan Pablo Bustos Says:

    Estimado van,
    Tal como menciono en el artículo se trata de una opción, si lo que necesitás es simplemente reproducir un mensaje, el contexto quedaría así:

    [amessage]
    exten => s,1,Answer
    exten => s,2,Wait,2
    exten => s,n,Playback(custom/message)
    exten => s,n,Hangup()

    En el caso del script es un script generico en php.

    Saludos

  3. van Says:

    muchas gracias por la aclaracion.

  4. Tweets that mention Elastix Blogs » Blog Archive » Broadcast messages with Elastix’s Call Center Module -- Topsy.com Says:

    [...] This post was mentioned on Twitter by rbonifaz, elastix, 咻~咻~我是风, asteriskbot, asteriskbot and others. asteriskbot said: @rbonifaz: ♺ @elastix: Broadcast messages with !Elastix’s Call Center Module http://ur1.ca/l025 #voip #asterisk [...]

  5. 6string Says:

    Thanks for the great blog. Very useful
    Have you had an issue with the retries, when I set this up it doesn’t recognize that the calls have been answered so it retries.

  6. Juan Pablo Bustos Says:

    Hi,
    You need to set the Short Call Threshold (at call center’s preferences) to a value that fit your needs, by default it’s 10 seconds, if your message is shorter than that, the dialer will think the call was to short, so it’ll call the same number again.
    On the other hand, you can se to 0 the number of retries when you create the outgoing campaign.

    Regards

  7. Mfawa Alfred Onen Says:

    This is a nice tutorial…

  8. 6string Says:

    Juan Pablo
    Is there a way to get the calls to show up in the Call Center Reports
    Or record the calls
    Thanks Danny

  9. Juan Pablo Bustos Says:

    6string,
    As you may notice at the end of this script you can find this line:
    exten => h,1,DeadAGI(llamadas.php,${RESP})
    That’s and example to use a php script who can save the numbers at a database, in my case, I made a script that saves the called number, and the option chosen, and also, I made another script to display saved data.

    Regards

  10. Marcus Says:

    salut
    je suis vraiment ravis de t avoir car j ai implémenté ton tuto mais je n est rien qui remonte comme liste dans ma console agent car je suis vraiment très intéressé par ce module callcenter
    j ai fais toutes les modif et creer ma capagne mais helas je ne vois rien
    merci de m aider

  11. Marcus Says:

    je ne sais pas si Alfred peut aussi m aidé dans ce sens …
    merci

  12. Jama Vandis Says:

    Nice looking blog you have here. The theme is awesome, great color combination.

  13. Math Says:

    Muy agradable tutorial, cualquiera cuánto costará para establecer un centro de la llamada

  14. Jorge Says:

    Excelente escrito, J. Pablo podrias publicar dichos scripts php para newbes como yo, mucho te lo agradeceriamos todos. aprovecho para preguntar en la interfase del modulo callcenter existe otra forma de alimentar la base de datos de contactos que no sea con CSV?, pues a pesar de que he buscado subir acorde a diversos tutoriales existentes siempre termina mandandome el (no data found ) es decir no logro que guarde en mysql el CSV subido. que debo hacer?

  15. nname Says:

    Please tell me how to make outgoing company (broadcast messages)works?
    What kind of parameters should be used?

  16. Mauro Says:

    Juan, muy bueno el tutorial. Lo estoy probando pero tengo una duda respecto de los llamados que no son contestados; como sabe el Dialer que si la campaña dura dos dias, al dia siguiente debe reiterar llamados solamente a los numeros no concretados?? O se termina la campaña y listo ?? Gracias.

  17. Juan Pablo Bustos Says:

    Mauro,
    Eso lo manejás con la duración mínima de llamada exitosa (está en la configuración de call center) directamente vos establecés cuanto tiene que durar la llamada para saber cuales fueron contestados y cuales no (ésto es un feature de call center), fijate que cuando hacés el setup de la campaña, te pregunta cuantas veces tiene que reintentar, si es superado ese número, la campaña finaliza.

    Saludos

  18. Drew Says:

    This is a great tutorial, but I’ve noticed that if when an message is played back, it doesn’t wait for the callee to pick up the line. Instead, it starts playing right away, so if the callee doesn’t pick up the phone for 5-10 seconds, they miss the first 5-10 seconds of the message. Is there any way to trigger the playback for after the dialed party picks up the phone, instead of immediately when the virtual agent connects?

  19. Drew Says:

    I’ve looked into this more myself and it looks like it’s really my phone line’s limitations on detecting when the call is answered. Since there isn’t answer supervision on the line that reverses the polarity when the other party picks up and it’s a PSTN analog, there’s nothing I can do.

  20. Candace Misiaszek Says:

    where can i buy do not call list for Canada?

  21. outsourcing providers Philippines Says:

    Thanks for sharing. It looks like a great way to make call handling more efficient for both agent and customer.

  22. call center philippines Says:

    This is a great tutorial, but I’ve noticed that if when an message is played back, it doesn’t wait for the callee to pick up the line. Instead, it starts playing right away, so if the callee doesn’t pick up the phone for 5-10 seconds, they miss the first 5-10 seconds of the message.

  23. philippine contact center Says:

    Elastix is one of the best appliance software in the market that integrates the best tools available for Asterisk-based PBXs into a single, easy-to-use interface. Thanks for the tutorial. Nice post.

  24. sharon_miriam Says:

    I have heard that Elastix is one of the best appliance software in the market that integrates the best tools available. Good and informative blog. It is always good to be updated with the latest technology in a customer service call center.

Leave a Reply