Softdial Reporter™ Web uses the HSBridge (HttpSDMPBridge) component to transfer the campaign, queue, agent and call session data from Softdial CallGem™ to MongoDB.
HSBridge uses standard .NET configuration files. The HSBridge configuration file (HttpSMDPBridgeService.exe.config) is located in the Softdial/HSBridge folder.
This service is enabled by default on installation but can be disabled in the config file by setting the main enabled tag to false (Fig. 1).
Fig. 1 - HSBridge Web Reporting Configuration
This may be required when MongoDB is not installed in order to suppress alerts which appear in Softdial Campaign Manager™ Client (Fig. 2) and Alert Monitor.
Fig. 2 - Alert - Report Definition Missing
HttpSMDPBridgeService.exe.config contains the following XML elements:
<configSections> contains the definition of all <sectionGroups>, either standard or custom.
<configSections>
<sectionGroup name="interfaces">
<section name="rest" type="HttpSDMPBridgeService.RestInterfaceConfiguration, HttpSMDPBridgeService" allowLocation="true" allowDefinition="Everywhere"/>
<section name="callgem" type="HttpSDMPBridgeService.ServiceInterfaceConfiguration, HttpSMDPBridgeService" allowLocation="true" allowDefinition="Everywhere"/>
<section name="authserver" type="HttpSDMPBridgeService.ServiceInterfaceConfiguration, HttpSMDPBridgeService" allowLocation="true" allowDefinition="Everywhere"/>
<section name="components" type="HttpSDMPBridgeService.CredentialsConfiguration, HttpSMDPBridgeService" allowLocation="true" allowDefinition="Everywhere"/>
</sectionGroup>
<sectionGroup name="reporting">
<section name="rest" type="HttpSDMPBridgeService.RestInterfaceConfiguration, HttpSMDPBridgeService" allowLocation="true" allowDefinition="Everywhere"/>
<section name="main" type="HttpSDMPBridgeService.ReportingConfiguration, HttpSMDPBridgeService" allowLocation="true" allowDefinition="Everywhere"/>
<section name="callGem" type="HttpSDMPBridgeService.ServiceInterfaceConfiguration, HttpSMDPBridgeService" allowLocation="true" allowDefinition="Everywhere"/>
<section name="mongo" type="HttpSDMPBridgeService.ServiceInterfaceConfiguration, HttpSMDPBridgeService" allowLocation="true" allowDefinition="Everywhere"/>
<section name="credentials" type="HttpSDMPBridgeService.CredentialsConfiguration, HttpSMDPBridgeService" allowLocation="true" allowDefinition="Everywhere"/>
</sectionGroup>
</configSections>
<system.diagnostics> contains the definition of trace <sources> and <sharedListeners>.
For more info, please refer to http://msdn.microsoft.com/en-us/library/1txedc80.aspx.
Currently there are 13 trace <source> modules, which are independent sources of logs.
<sources>
<!-- this source trace and its listener which is type of HttpSDMPBridgeService.AlerterListener is added to each other source trace which instantiate ExtendedTraceSource -->
<source name="Alerts" switchValue="Information,ActivityTracing">
<listeners>
<remove name="Default"/>
<add name="AlerterListener">
<filter type=""/>
</add>
</listeners>
</source>
<source name="Bridge" switchValue="Information,ActivityTracing">
<listeners>
<remove name="Default"/>
<add name="BridgeListener">
<filter type=""/>
</add>
</listeners>
</source>
<sources>
All trace <source> modules should have logging level (switchValue) set to "Information,ActivityTracing".
The richest logging information is produced by setting to switchValue="Verbose, ActivityTracing".
<source name="Alerts"...> is shared by all modules. This source uses AlerterListener, which is in charge of sending messages to Alert Monitor.
The 13 trace <source> modules (above) make up 8 separate <sharedListeners>, effectively producing 8 separate log files:
Legacy HSBridge Listeners | |
BridgeListener | Session and communication tracking |
AlerterListener | Status Broadcast [SB], Notify Event [NE] SDMP message caching Event Module |
WebListener | Web interface communication |
Reporter Web Listeners | |
CallGemListener | Softdial CallGem™ communication |
MongoListener | MongoDB communication |
ProcessorListener | Message processing |
ReplayListener | Replay/ Recover/ Migrate module |
ReporterListener | Softdial Reporter™ Web instance |
WebListener | Web interface communication |
<sharedListeners>
<!-- this version suppresses the datetime stamp on the filename add type="HttpSDMPBridgeService.SytelLogFileTraceListener, HttpSMDPBridgeService" name="BridgeListener" traceOutputOptions="DateTime" initializeData="debug"-->
<add type="HttpSDMPBridgeService.SytelLogFileTraceListener, HttpSMDPBridgeService" name="BridgeListener" traceOutputOptions="DateTime">
<filter type=""/>
</add>
<add type="HttpSDMPBridgeService.SytelLogFileTraceListener, HttpSMDPBridgeService" name="ProcessorListener" traceOutputOptions="DateTime">
<filter type=""/>
</add>
</sharedListeners>
<appSettings> contains legacy HSBridge settings. See the example below for comments.
<appSettings>
<add key="namespace" value="http://localhost:7006"/>
<add key="domain" value="sytelco.com"/>
<add key="dialer name" value="dialer"/>
<add key="ping" value="60"/>
<!-- These credentials are denied -->
<add key="deny 0" value="landlord/SYSTEM/SYSTEM"/>
<add key="deny 1" value="landlord/SUPERUSER/SUPERUSER"/>
<add key="deny 2" value="landlord/ENUMERATOR/ENUMERATOR"/>
<add key="deny 3" value="tenant/Administrator/password"/>
<add key="deny 4" value="tenant/Reception/password"/>
<add key="deny 5" value="tenant/Publisher/Publisher"/>
<add key="deny 6" value="landlord/Administrator/password"/>
<!-- not used -->
<add key="dialer version" value="10.6.*.*"/>
<add key="bridge name" value="bridge"/>
<add key="callgem send async timeout" value="5000"/>
<add key="language" value="en"/>
<add key="ClientSettingsProvider.ServiceUri" value=""/>
<!-- logFile part-->
<add key="MaxDaysOld" value="28"/>
<add key="BreakAtMidnight" value="true"/>
<add key="BreakAtSize" value="10000000"/>
<!-- if this switch is set to true the agent interface enter the debug mode where:
- the bridge accepts old or unsigned certificates
- testing application session is created upon start: tenant= "default", user = "AgentTester",authkey = "-1",permission flag = 65535, callback url= "https://localhost/callback"
-->
<add key="agent interface debug" value="true"/>
</appSettings>
<interfaces> contains the new HSBridge configuration.
<interfaces>
<!-- HSBridge web network interface -->
<rest enabled="true" prefix="http://*:7003/"/>
<!-- application sessions (PHP) use this interface to communicate with callgem-->
<callgem>
<!-- primary callgem datasource -->
<primary port="6500" tenant="landlord" user="SYSTEM" password="SYSTEM" host="localhost"/>
<!-- secondary callgem datasource -->
<secondary host="10.0.0.1" port="6500" tenant="landlord" user="SYSTEM" password="SYSTEM"/>
</callgem>
<!-- This interface is used to authenticate a user who wants' to create softdial session in HSBridge. By creating session and thanks to federation one gets access to a interfaceses like: callgem, reporting, list import, recording monitor.
Currently we support only callgem authentication, in future we plan to add: oauth, file, db authentications-->
</interfaces>
<reporting> enables Reporter Web configuration.
<reporting>
<!-- general and processor reporting section
@stream_buffer_capacity is max number of messages befor throwing buffer overflow exception, one can set this value to a high number if has much memory, default is 5000 messages
-->
<main enabled="true" campaigns_collection="metrics.campaign.hour" agents_collection="metrics.agent.hour" queues_collection="metrics.queue.hour" queues_agents_collection="metrics.queue.agent.hour" reports_granularity="3600" agent_name_filter="Spoof.*[^.]">
</main>
<!-- mongo configuration: these are supported primary secondary tertiary quaternary quinary senary septenary
@connection_timeout how long to wait for socket to connect, 5 sec default
@socket_timeout how long to take for blocking opearation, 30 sec default
-->
<mongo connection_timeout="5" socket_timeout="60">
<primary port="27017" host="localhost"/>
<!-- as long as you don't have secondary don't use this option -->
<!-- secondary host="10.0.0.1" port="27017"/ -->
</mongo>
<!-- reporting web network interface, this interface is given to hsbridge in order to do callbacks -->
<rest enabled="true" prefix="http://localhost:7054/"/>
<!-- callgem data source: main source of reporting events-->
<callGem>
<primary port="6500" tenant="landlord" user="SYSTEM" password="SYSTEM" host="localhost"/>
<secondary host="localhost" port="6500" tenant="landlord" user="SYSTEM" password="SYSTEM"/>
</callGem>
<!-- it is used to login to bridge to get presence messages from all users - Federation-->
<credentials tenant="landlord" user="reporter" password="reporter" authurl="http://localhost:7003"/>
</reporting>