bgERP.com

Връзка с телефонна централа Asterisk


Asterisk е най-популярният софтуер с отворен код, който служи за изграждане на телефонни централи. Той има големи възможности и се използва както от малки фирми, така и от големи кол-центрове. На пазара има много готови хардуерни решения базирани на Астериск, но не са рядкост и случаите, когато този софтуер се инсталира и поддържа самостоятелно от системните администратори на фирмата.

bgERP има възможжост за интегриране с телефонната централа на фирмата, ако тя е базирана на Астериск. При това интегриране, всеки потребител получава в реално време информация за входящите му повиквания. По този начин, още преди да е вдигнал слушалката, нашият служител може да отвори папката на контрагента и да разбере текущото му състояние. Възможен е запис на всички обаждания с лесен интерфейс за прослушване в bgERP, както и за създаване и споделяне на задачи, базирани на телефонен разговор. Има регистър на приетите и пропуснатите обаждания.

За да се интегрира bgERP с Астериск трябва да се инсталира пакета CallCenter.

callcenter-jpg-jrc7

В неговите настройки е ключа за връзка с bgERP. Ключът се генерира автоматично при инсталиране на пакета.

callcen-png-plg6

Примерен макрос от дайл-плана, използван при входящи разговори, в който са включени командите със съответните url-та

[macro-simple-dial]

; Simple Dial between users

exten => s/_0.,1,System(wget --quiet --spider --timeout=2 --no-check-certificate \"http://yourdomain.com/callcenter_Talks/RegisterCall/?p=parameter&starttime=${CDR(start)}&extension=${CDR(dst)}&callerId=${CDR(src)}&uniqueId=${CDR(uniqueid)}\")
exten => s/_XXXXXX,1,System(wget --quiet --spider --timeout=2 --no-check-certificate \"http://yourdomain.com/callcenter_Talks/RegisterCall/?p=parameter&starttime=${CDR(start)}&extension=${CDR(dst)}&callerId=${CDR(src)}&uniqueId=${CDR(uniqueid)}\")
exten => s,1,NoOp()
exten => s,2,Set(x=${CDR(channel)})
exten => s,n,Dial(SIP/${ARG1},120,WTte) 
exten => s/_0.,n,System(wget --quiet --spider --timeout=2 --no-check-certificate \"http://yourdomain.com/callcenter_Talks/RegisterEndCall/?p=parameter&answertime=${CDR(answer)}&endtime=${CDR(end)}&dialstatus=${CDR(disposition)}&uniqueId=${CDR(uniqueid)}\")
exten => s/_XXXXXX,n,System(wget --quiet --spider --timeout=2 --no-check-certificate \"http://yourdomain.com/callcenter_Talks/RegisterEndCall/?p=parameter&answertime=${CDR(answer)}&endtime=${CDR(end)}&dialstatus=${CDR(disposition)}&uniqueId=${CDR(uniqueid)}\")
exten => s,n,Playtones(congestion)    
exten => s,n,Congestion(5)

; Extensions with no Voicemail box reporting BUSY come here

exten => s-BUSY,1,NoOp(Extension is reporting BUSY)
exten => s-BUSY,n,Playtones(busy)
exten => s-BUSY,n,Busy(20)

; Anything but BUSY comes here

exten => _s-.,1,Playtones(congestion)
exten => _s-.,n,Congestion(10)

exten => h/_0.,1,ExecIf($["${CHANNEL}" = "${x}"]?System(wget --quiet --spider --timeout=2 --no-check-certificate \"http://yourdomain.com/callcenter_Talks/RegisterEndCall/?p=parameter&answertime=${CDR(answer)}&endtime=${CDR(end)}&dialstatus=${CDR(disposition)}&uniqueId=${CDR(uniqueid)}\"))
exten => h/_XXXXXX,1,ExecIf($["${CHANNEL}" = "${x}"]?System(wget --quiet --spider --timeout=2 --no-check-certificate \"http://yourdomain.com/callcenter_Talks/RegisterEndCall/?p=parameter&answertime=${CDR(answer)}&endtime=${CDR(end)}&dialstatus=${CDR(disposition)}&uniqueId=${CDR(uniqueid)}\"))

Кратко описание:
В началото на макроса изпращаме данни за:
времето на звънене - starttime=${CDR(start)}
търсения вътрешен номер - extension=${CDR(dst)}
номера от който е обаждането - callerId=${CDR(src)}
уникалното ID на разговора - uniqueId=${CDR(uniqueid)}
Относно опциите на командата wget - по-важната е --timeout=2 - с нея ограничаваме таймаута, ако липсва връзка с yourdomain.com - в противен случай времето е много голямо и на практика входящите обаждания спират.
След проведения разговор изпращаме данни за:
времето на отговора - answertime=${CDR(answer)}
времето на край на разговора - endtime=${CDR(end)}
статуса на разговора - dialstatus=${CDR(disposition)}
и отново уникалното ID на разговора - uniqueId=${CDR(uniqueid)}
Параметърът p=parameter представлява "Защитен ключ за регистриране на обаждания".
Неговата стойност се взема от настройките на пакета CallCenter и се замества parameter с вашия генериран ключ.
В края на макроса ползваме h extension, която предава данните за край, в случай че има прекъсване на разговора.

При изходящ разговор предаваме следните параметри:
Преди началото на звъненето
параметър, указващ че разговора е изходящ - outgoing=outgoing
начало на звъненето - starttime=${CDR(start)} търсения номер - extension=${CDR(dst)}
номера от който звъним - callerId=${CDR(src)}
уникалното ID на разговора - uniqueId=${CDR(uniqueid)}
След края на разговора - параметрите са същите както при край на входящ разговор и отново използваме h extension.

bgERP не изтегля данни от централата, а централата праща заявки към bgERP - за това трябва да се настрои централата.

В системата (в настройките на пакета callcenter) въвеждането на IP в пакета ограничава само адресите, от които могат да се получават заявки - ако е празно - значи се получават от всички ИП-та, които знаят ключа най-горе в настройката на пакета.

В "Система->Админ->Логове->Системен" при филтриране по дебъг можете да видите заявките, които пристигат в системата (от астериск).



Това е примерен разговор - първо се праща начало на разговор, след това край.

CALL BEGIN: /callcenter_Talks/RegisterCall/?p=randomKey&starttime=2018-03-29+10%3A37%3A16&extension=540&callerId=062611540&uniqueId=1727379036.28123

CALL END: /callcenter_Talks/RegisterEndCall/?p=randomKey&extension=540&answertime=2018-03-29+10%3A37%3A22&endtime=2018-03-29+10%3A37%3A44&dialstatus=ANSWERED&uniqueId=1727379036.28123:

От тези две заявки се получава един пълен запис в централата.

Информация за работата на централата можете да намерите в тази статия