listenclosely

Listenclosely is a django-app that works as a middle man to connect instant messaging clients.


Keywords
listenclosely
License
BSD-3-Clause
Install
pip install listenclosely==0.1.2

Documentation

listenclosely

CI:

Coverage Requirements Status

PyPI:

Docs:

Documentation Status

Listenclosely is a django-app that works as a middleman to connect instant messaging clients. Think on a Call Center/Customer Service using using instant messaging... exactly what it does.

  • It is simple, connects Askers with online Agents until the Chat is considered as terminated and the Agent is released to attend other Asker chats.
  • It is flexible, so you can define your own strategies to assign Agents to Askers and your own messaging backend services.

Messaging Services integrated:

Documentation

The full documentation is at https://listenclosely.readthedocs.org.

https://raw.github.com/jlmadurga/listenclosely/master/docs/imgs/diagram.png
  • Asker1 is chatting with the Busy Agent
  • Asker2 try to chat but no free Agent was free so is waiting with a Pending chat to be attended by an agent
  • Asker3 is opening a chat and Online Agent will be assigned to the chat

Quickstart

Install listenclosely:

pip install listenclosely

Then use it in a project:

import listenclosely

Add it to django apps and migrate:

INSTALLED_APPS = [
        ...
'listenclosely',
...
]
python manage.py migrate

Select, install and configure service backend

LISTENCLOSELY_MESSAGE_SERVICE_BACKEND = "listenclosely_telegram.service.TelegramMessageServiceBackend"

Define your agent strategy or define your own:

LISTENCLOSELY_AGENT_STRATEGY = 'listenclosely.strategies.first_free.FirstFreeAgentStrategy'

Add step to your celery app:

from listenclosely.celery import ListenCloselyAppStep
app.steps['worker'].add(ListenCloselyAppStep)

Start your celery app usign gevent:

celery --app=demo_app.celery:app worker -P gevent

Call listen task or define a celery scheduler to execute:

from listenclosely import tasks
tasks.listen.delay()

Features

  • Connects Askers and Agents in chats to establish a Chat
  • Strategies to find Agent to attend new Asker chat. Define your own strategies
  • Messaging Service Backend: Define your own messaging service backend implementations.
  • Cron tasks for attending pending chats and to terminate obsolete chats to release Agents

Running Tests

Does the code actually work?

source <YOURVIRTUALENV>/bin/activate
(myenv) $ pip install -r requirements/test.txt
(myenv) $ make test