Computer Telephony Integration: Programatically manage phone calls.
This project shows signal events provided by the CTI from OVH France
telephony services.
This dashboard works on SIP (sipCirpack) and hunting numbers (easyHunting and cloudHunting). It also works on some MGCP phones except for the following cases: * MGCP to OVH SIP number or external numbers.
This control panel can be used to display: * call setup * call duration * call queuing events
from your OVH billing account
. It can be used as a starting point for a custom solution. It also allows the use of url callbacks to display user details or other needs.
This demo is a frontend-only application. The JavaScript processes long-polling requests against the following url:
https://events.voip.ovh.net/?token=[TOKEN]
Get your token group or token number from the API.
POST /telephony/{billingAccount}/eventToken
This will give you a token of the form ABCDEFAB-CDEF-ABCD-EFAB-CDEFABCDEFAB
. You can
now use it to fetch events with a curl
request like:
curl https://events.voip.ovh.net/?token=ABCDEFAB-CDEF-ABCD-EFAB-CDEFABCDEFAB
A live demo of this dashboard is available <https://events.voip.ovh.net/demo/cti> here
If you want to host it by yourself:
- Using
Python
: python -m SimpleHTTPServer - Using
Apache
: copy all files of the project in your favorite web
server document root. Usually : /var/www.
CTI events are triggered by the followings:
- start_ringing Start ringing
- end_ringing End ringing
- start_calling Start calling
- end_calling End calling
- registered In case of register announcement
- member-queue-start Member entering a queue
- member-queue-end Member leaving a queue
- agent-offering Member ringing
- bridge-agent-start Agent start bridging
- bridge-agent-end Agent end bridging
- bridge-agent-end Agent end bridging
- member-count Member queue size changing
json:
>Data: { > Billing: "0033912312312" (OVH number) > Body: "SIP/2.0 200 OK" (Header SIP packet) > CallId: "N2ZkZmEyNGMxZWM0N2VhN2M4NGJkMTY4ZGYwZmU2OTY." (CallId identifier) > Called: "0033912312312" (calling number) > Calling: "0033912312312" (L'appelant) > Cseq: "181 REGISTER" (Le code CSeq du paquet SIP) > DateStart: Thu Mar 05 2015 12:44:30 GMT+0100 (CET) (La date) > Dialed: "0033912312312" (Le numéro composé) > Event: "registered" (Le type d'évenement) > Protocol: "sip" (Le type de protocole, sip ou mgcp) > RelevantInfo: "" (Information importante) > Ts: 1425554670.102 > TsGet: 1425554670238926800 (Le timestamp de l'évenement en nanoseconde) >} >Date: "2015-03-05T12:24:30.255954 (CET)" >Details: { > Description: "Gaelle Becquet" (Description du numéro OVH) > Id: "295670" (Identifiant de la ligne du numéro OVH) > IdBillingAccount: "59415" (Identifiant du groupe du numéro OVH) > SimultaneousLine: "2" (Nombre de lignes simultannées) > Type: "sipCirpack" (Type de ligne) >} >Event: "registered" (Le type d'évenement) >Ressource: "0033912312312" (Le numéro OVH) >Service: "sip" (Le protocole) >Timestamp: 1425554670255954700 (Le timestamp de l'évenement en nanoseconde) >Token: "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" (Le token)
"Configuration => Appel du CGI"
Then specify the CGI URL and the execution type. Some dynamic values can be specified in the URL:
- CALLING => Calling number
- CALLED => Called number
- EVENT => Event name
Example : http://monsite.com?number=*CALLING*
- API endpoint: https://events.voip.ovh.net/
- Live demo: https://events.voip.ovh.net/demo/cti
- Documentation: [French] http://www.ovhtelecom.fr/pdf/telephony/guides/g1725.cti
- Official website: [French] https://www.ovhtelecom.fr/telephonie/services_inclus/
MIT