MT#55831 add sw_vcs module

add sw_vcs module

(real ticket number: MT#7349)

Change-Id: Ief01edc411bcea674d46e8a3555da23b4efc13af
mr11.2.1
Victor Seva 4 years ago committed by Donat Zenichev
parent d2f507a891
commit baa4b2edb6

@ -0,0 +1,10 @@
plug_in_name = sw_vsc
module_ldflags = -lmysqlclient `pcre-config --libs` -lpcrecpp
module_cflags = -I/usr/include/mysql `pcre-config --cflags`
module_extra_objs =
extra_install = $(plug_in_name)_audio
COREPATH ?=../../core
include $(COREPATH)/plug-in/Makefile.app_module

File diff suppressed because it is too large Load Diff

@ -0,0 +1,134 @@
#ifndef _SW_VSC_H_
#define _SW_VSC_H_
#include "AmSession.h"
#include "AmConfigReader.h"
#include "AmAudioFile.h"
#include "AmUACAuth.h"
#include "ampi/UACAuthAPI.h"
#include <string>
using std::string;
#include <memory>
#include <regex.h>
#include <mysql.h>
typedef struct
{
string mysqlHost;
int mysqlPort;
string mysqlUser;
string mysqlPass;
string audioPath;
string failAnnouncement;
string unknownAnnouncement;
string voicemailNumber;
regex_t cfuOnPattern;
string cfuOnAnnouncement;
regex_t cfuOffPattern;
string cfuOffAnnouncement;
regex_t cfbOnPattern;
string cfbOnAnnouncement;
regex_t cfbOffPattern;
string cfbOffAnnouncement;
regex_t cftOnPattern;
string cftOnAnnouncement;
regex_t cftOffPattern;
string cftOffAnnouncement;
regex_t cfnaOnPattern;
string cfnaOnAnnouncement;
regex_t cfnaOffPattern;
string cfnaOffAnnouncement;
regex_t speedDialPattern;
string speedDialAnnouncement;
regex_t reminderOnPattern;
string reminderOnAnnouncement;
regex_t reminderOffPattern;
string reminderOffAnnouncement;
} sw_vsc_patterns_t;
class SW_VscFactory: public AmSessionFactory
{
inline string getAnnounceFile(const AmSipRequest &req);
sw_vsc_patterns_t m_patterns;
public:
SW_VscFactory(const string &_app_name);
virtual ~SW_VscFactory();
int onLoad();
AmSession *onInvite(const AmSipRequest &req, const string &app_name,
const map<string, string> &app_params);
AmSession *onInvite(const AmSipRequest &req, const string &app_name,
AmArg &session_params);
};
class SW_VscDialog : public AmSession,
public CredentialHolder
{
AmAudioFile m_wav_file;
sw_vsc_patterns_t *m_patterns;
std::auto_ptr<UACAuthCred> cred;
u_int64_t getAttributeId(MYSQL *my_handler, const char *attribute);
u_int64_t getSubscriberId(MYSQL *my_handler, const char *uuid,
string *domain, u_int64_t &domain_id,
u_int64_t &profile_id, string *username);
u_int64_t getPreference(MYSQL *my_handler, u_int64_t subscriberId, u_int64_t attributeId,
int *foundPref, string *value);
int deletePreferenceId(MYSQL *my_handler, u_int64_t preferenceId);
int insertPreference(MYSQL *my_handler, u_int64_t subscriberId,
u_int64_t attributeId, string &uri);
int updatePreferenceId(MYSQL *my_handler, u_int64_t preferenceId, string &uri);
int insertSpeedDialSlot(MYSQL *my_handler, u_int64_t subscriberId, string &slot, string &uri);
int insertReminder(MYSQL *my_handler, u_int64_t subscriberId, string &repeat, string &tim);
int deleteReminder(MYSQL *my_handler, u_int64_t subscriberId);
int number2uri(const AmSipRequest &req, MYSQL *my_handler, string &uuid, u_int64_t subId,
string &domain, u_int64_t domId, int offset, string &uri,
string &username);
int checkSubscriberProfile(MYSQL *my_handler, u_int64_t profileId, u_int64_t attributeId);
u_int64_t createCFMap(MYSQL *my_handler, u_int64_t subscriberId, string &uri,
const char *mapName, const char *type);
u_int64_t deleteCFMap(MYSQL *my_handler, u_int64_t subscriberId,
const char *mapName, const char *type);
public:
SW_VscDialog(sw_vsc_patterns_t *patterns,
UACAuthCred *credentials = NULL);
~SW_VscDialog();
void onSessionStart();
void onStart();
void onInvite(const AmSipRequest &req);
void onBye(const AmSipRequest &req);
void onDtmf(int event, int duration_msec) {}
void process(AmEvent *event);
UACAuthCred *getCredentials();
};
#endif

@ -0,0 +1,40 @@
mysql_host = 127.0.0.1
mysql_port = 3306
mysql_user = soap
mysql_pass = s:wMP4Si
announce_path = /usr/lib/sems/audio/
error_announcement = sw_vsc_error.wav
unknown_announcement = sw_vsc_unavailable.wav
voicemail_number = 2000
cfu_on_pattern = ^\*72\*[0-9]+$
cfu_on_announcement = sw_vsc_activated.wav
cfu_off_pattern = ^(\%23)72(\%23)?.*$
cfu_off_announcement = sw_vsc_deactivated.wav
cfb_on_pattern = ^\*90\*[0-9]+$
cfb_on_announcement = sw_vsc_activated.wav
cfb_off_pattern = ^(\%23)90(\%23)?.*$
cfb_off_announcement = sw_vsc_deactivated.wav
cft_on_pattern = ^\*92\*[0-9]+\*[0-9]+$
cft_on_announcement = sw_vsc_activated.wav
cft_off_pattern = ^(\%23)92(\%23)?.*$
cft_off_announcement = sw_vsc_deactivated.wav
cfna_on_pattern = ^\*93\*[0-9]+$
cfna_on_announcement = sw_vsc_activated.wav
cfna_off_pattern = ^(\%23)93(\%23)?.*$
cfna_off_announcement = sw_vsc_deactivated.wav
speed_dial_pattern = ^\*50\*[0-9]+$
speed_dial_announcement = sw_vsc_activated.wav
reminder_on_pattern = ^\*55\*[0-9]+$
reminder_on_announcement = sw_vsc_activated.wav
reminder_off_pattern = ^(\%23)55(\%23)?.*$
reminder_off_announcement = sw_vsc_deactivated.wav
Loading…
Cancel
Save