Quantcast
Channel: BroadSoft Xtended Developers Program.
Viewing all 298 articles
Browse latest View live

Receiving "Invalid XML" response when trying AddUserSubscriptionRequest

$
0
0

Im using BroadSoft CTI over TCP. When trying to add a user subscription with the xml message:

 <?xml version="1.0" encoding="UTF-8"?>

<xsp:request xmlns:xsp="http://schema.broadsoft.com/XspXMLInterface">

<requestId>2345</requestId>

<sessionId>12</sessionId>

<credentials> %validcreds% </credentials>

<xsp:payload>

<AddUserSubscriptionRequest xmlns="http://schema.broadsoft.com/CTI">

<uri>/com.broadsoft.xsi-events/v2.0/user/%userid%

<method>POST</method>

<params>

<userId>%userid%</userId>

</params>

<payload>

<Subscription xmlns="http://schema.broadsoft.com/xsi">

<event>Basic Call</event>

<applicationId>%applicationId%</applicationId>

<expires>3600</expires>

<channelSetId>%channelSetId%</channelSetId>

</Subscription>

</payload>

</AddUserSubscriptionRequest>

</xsp:payload>

</xsp:request>

Where %userId% is <user>@<domain>.com  and %channelSetId% is the channelset name from a previously successful AddEventChannelRequest.

I get this response:

<?xml version="1.0" encoding="UTF-8"?>

<xsp:response xmlns:xsp="http://schema.broadsoft.com/XspXMLInterface" version="17.0">

<requestId>2345</requestId>

<sessionId>12</sessionId>

<statusCode>409</statusCode>

<reason>Conflict</reason>

<xsp:payload>

<ErrorInfo xmlns="http://schema.broadsoft.com/xsi">

<summary>Invalid Xml</summary>

<summaryEnglish>Invalid Xml</summaryEnglish>

<errorCode>1116</errorCode>

</ErrorInfo>

</xsp:payload>

</xsp:response> 

Obviously my xml message is malformed somewhere, but I don't know where/why. I would appreciate another pair of eyes :)

 Thanks for your time, 


Has anyone implemented SIP trunking? Is there any developer guides that could be useful in determining what OCI calls needed

$
0
0

Wanted documentation for needed OCI calls for SIP trunking implementation.

Troubles with uploading a CPL script

$
0
0

I am having trouble uploading and/or even linking to a URL of a CPL script. I've tried different extensions like .xml and .cpl but none seem to work. The error i'm getting when either uploading the script to the "Service Scripts" menu in Broadworks or pointing the URL to the script.xml is:

**Parsing Error** Line: 2 Message: Document is invalid: no grammar found.

Here is the actual script:

http://0c31ac7857e819701732-7c102875f448c5383a11c1d07426cb3e.r86.cf1.rac...

This is just a test cpl script and I tried moving the code around to satisfy broadworks parsing engine but this error always occured no matter what.

I also tried just creating a CPL script that points to a voicexml script but got the same error. Does anyone have advice here?

 

Lastly, I'm looking for someone who can write a CPL/VoiceXML script for a project. Please email me at joe at gawlabs dot com.

 

Thanks. 

The format of empty fileds in anywhere

$
0
0

The question is what is the right format to empty outboundAlternateNumber fileds in anywhere.

We can use xs:nil="true" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance to empty the fileds in Simultaneous Ring Personl.

But we can't use xs:nil="true" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance to empty the fileds in anywhere.

The issue is only in R17 SP4. It can work well in R19

some question about sip xsi

$
0
0

    we met a problem that really need your help.
    
    According to the SIP Authentication for XSIFD.pdf,The Authorization header credentials are formed as follows:
    
    basic=”base64(userId:sipPassword)”,sipUser=”base64(sipUsername)”
    
    And  the request url is : http://199.19.193.15/com.broadsoft.xsi-actions/v2.0/user/<userID>/direct...
    
     
    
    But when we sent the request, the server returned 401 unauthorized. On the contrary,  we can authorized the xsi if we used the pervious way with the same url and same xsi userID and password.Could you kindly please give us some suggestion?

XSI-Events Implementation in Python

$
0
0

I'm working on building a Python class (or classes) that implement the XSI-Actions and XSI-Events API's. I'm getting reasonable resposnes against the Sandbox for some of the Actions, but I'm getting Internal Server Errors when I try to register for an Events Channel and trying to work with async notifications.  The 500 Internal Server Errors are only cropping up in the Sandbox envrionment - the code I'll be posting (at least with respect to the creation of Events Channels) works against the deployed version from our phone provider.  Their system, however, has other problems (namely, I can't look up created Channels or reference my ChannelSet at present) so they're looking into those issues for me.  I'd presume (however naively) that the code I'm writing ought to work against the Sandbox and against the live system, so I'm posting it here so I can try to get some additional assistance and am not unproductive while waiting for my provider to fix their deployment.

As all of this API is being retrieved over HTTP, the classes need to start there.In Python we end up with something like this as a starting basis:

 class EventsChannel(object):
   def Connection(self, host, port = 443):
    Klass = httplib.HTTPConnection if port == 80 else httplib.HTTPSConnection
    debug("Connecting to %s on %d" % (host, port))
    conn = Klass(host, port)
    conn.request('HEAD', '', headers = EventsChannel.headers)
    res = conn.getresponse()
    debug('Status: %d  Reason: %s' % (res.status, res.reason))
    if res.status in (301, 302):
      debug("Redirecting to %s" % res.getheader('location'))
      newhost = proto.sub('', res.getheader('location').rstrip('/'))
      conn = self.Connection(*urllib.splitnport(newhost, port))
    if res.status in (200,):
      conn = Klass(host, port)
    return conn

This method allows me to request connections, preferably secure, to a server.  There's some extra work involved to handle redirects, as well as a final re-creation of the connection that seemed necessary only when connecting to the Sandbox.  I actually think that's related to the error I get a few calls later, when I do this:

  def make_conduit(self):
    # Build up the XML Content for the Event Conduit.
    XML = Document()
    channel = XML.createElement('Channel')
    channel.setAttribute('xmlns', schema)
    props = [('channelSetId', self.csid),
             ('priority', '1'),
             ('weight', '50'),
             ('expires', '3600')]
    for name, val in props:
      elem = XML.createElement(name)
      elem.appendChild(XML.createTextNode(val))
      channel.appendChild(elem)
    XML.appendChild(channel)
    body = XML.toxml()
    print XML.toprettyxml()

    # Create the connection and POST to open the channel.
    return self.post(self.url(async, events, version, 'channel'), body)

  def post(self, url, body, connection = None):
    if connection is None:
      connection = self.Connection(baseurl)
    headers = EventsChannel.headers.copy()
    headers['Content-Length'] = '%d' % len(body)
    connection.request('POST', url, '', headers)
    connection.send(body)
    return connection.getresponse()

The methods here are responsible for building the XML Body that will be posted to create an Events Channel and return an HTTPResponse that I can read events from.  This code worked against my Provider's deployment, but does not work against the Sandbox.  The XML Content that gets POSTed looks like this when printed with reasonable formatting:

<?xml version="1.0" ?>
<Channel xmlns="http://schema.broadsoft.com/xsi">
    <channelSetId>c464e68f-6714-11e2-81d1-08002700c0e6</channelSetId>
    <priority>1</priority>
    <weight>50</weight>
    <expires>3600</expires>
</Channel>

That's generated as per the API Documentation I can find.  Posting that content to the Sandbox produces a 500 Internal Server Error.

The only other method I think that's called in this demo code is this one:

  def url(self, *args):
    return '/'.join(itertools.chain([''], args))

And that's just a convenience method for putting together urls.  I've defined the following constants as well:

async = 'com.broadsoft.async'
actions = 'com.broadsoft.xsi-actions'
events = 'com.broadsoft.xsi-events'
schema = 'http://schema.broadsoft.com/xsi'
version = 'v2.0'
proto = re.compile('^https?://')

# These values for Sandbox Environment.
baseurl = 'xsp2.xdp.broadsoft.com'
user = >>myuser<<
pwd = >>mypwd<<

Those constants make for easy generation of dynamic urls.  Finally, as a way to test that I'm accessing the API even close to correctly, I added methods to retrieve a user profile:

  def get(self, url):
    C = self.Connection(baseurl)
    C.request('GET', url, '', EventsChannel.headers)
    return C.getresponse()

  def getuserprofile(self, userid):
    return self.get(self.url(actions, version, 'user', userid, 'profile'))

Those seem to work, and provide me the following JSON Response:

{u'Profile': {u'@xmlns': {u'$': u'http://schema.broadsoft.com/xsi'},
              u'additionalDetails': {},
              u'countryCode': {u'$': u'1'},
              u'details': {u'extension': {u'$': u'8220'},
                           u'firstName': {u'$': u'gddc_brooksnet'},
                           u'groupId': {u'$': u'gddc_brooksnetGroup'},
                           u'lastName': {u'$': u'User1'},
                           u'number': {u'$': u'2401008220'},
                           u'serviceProvider': {u'$': u'gddc_brooksnetEnt',
                                                u'@isEnterprise': u'true'},
                           u'userId': {u'$': u'gddc_brooksnetUser1@xdp.broadsoft.com'}},
              u'fac': {u'$': u'/v2.0/user/gddc_brooksnetUser1@xdp.broadsoft.com/profile/Fac'},
              u'passwordExpiresDays': {u'$': u'2147483647'},
              u'portalPasswordChange': {u'$': u'/v2.0/user/gddc_brooksnetUser1@xdp.broadsoft.com/profile/Password/Portal'},
              u'registrations': {u'$': u'/v2.0/user/gddc_brooksnetUser1@xdp.broadsoft.com/profile/Registrations'},
              u'scheduleList': {u'$': u'/v2.0/user/gddc_brooksnetUser1@xdp.broadsoft.com/profile/Schedule'}}}

I take the success of the simple GET Requests (along with the almost success against my providers servers) to mean that I'm close, but again, can't test further because of the 500 Internal Server Error I get when attempting to create the Events Channel on the Sandbox Server.

Which service in XSI is best suited for hospitality check-in/check-out ? Is there any existing example we can use ?

$
0
0


For our
hospitality customers we need to implement call logging, phone check-in (open
phone line and services), check-out (close phone line and services), name
modification (to display name on desk phone terminal), nationality modification
(same), class of service (allow/bar international calls). Which service in XSI is best
suited for check-in/check-out ? I guess we need to use a subset of user
profile, or services, or maybe set a user into a specific group ? Is there any
existing example we can use ?


VoiceXML and Answer Machine Detection

$
0
0

Hi All,

I'm in the final stages of wrapping up an integration
into Broadsoft Media server by means of CCXML and VoiceXML, however,
have the following two questions and their viability?

1) Does the
Broadsoft Media Server support a createsession request. I'm setup the
ccxml http server on the MS and its working by loading a defaultccxml
script, however, I'd like to rather have my system perform an HTTP POST
to the ccxmlhttpserver and create a new session that will then call the
CCXML script I want it to use (instead of using the default ccxml script
thats loaded on start up and listens for http events)

2) Is it
possible to do Answer Machine detection / Fax machine detection within
the VoiceXML dialog on the Broadsoft Media server? I'd like the ability
for the MS to tell me if the device answering the call is human or not.

 

I'm
really hoping the question 2 is possible, as this will finalize my
integration. It would be really nice if question 1 is possible too as
this will mean that I could offer seamless integration into the
Broadsoft product offering without having the need to request a
defaultccxmlscript on startup setup on the media servers.

I look forward to your responses.

Many thanks,

Doug


Is there any Licensing requirement in BroadWorks to enable SIPREC functionality?

How to block a User after accessing a Broadworks Assistant Enterprise after three Login Failures?

What is the minimum Broadworks version required to support XSI 2.0?

Shared Call Appearance

$
0
0

Hi,

We have requirement where we need to have 2 lines/telephone numbers to presented on a single handset. So if a call
comes in it rings under the line button. Secondly if the user wishes to dial out on either line that would be the
outbound CLI that is presented.

Is is possible in shared call appearance? if yes, can you please provide the related document or step by step
configuration?

Regards.
Dhanaji

Defect Report: "ACDCallAnsweredByAgentEvent" Generates Wrong "answeringUserId" Parameter Value On Pickup.

$
0
0

Hi Forum,

Please accept the following CTI Interface defect report:

The "ACDCallAnsweredByAgentEvent" CTI event generates an incorrect "answeringUserId" parameter value for the following scenario under BroadWorks release version 20 sp1:

1. An Enterprise Group is subscribed to with the event package "Call Center Agent".

2. An inbound call (either internal or network call) is originated to a Call Center Queue, where the call is immediately offered to extension user D1, which is an agent member of the corresponding call centre queue.

3. The call is picked up (either using the "Directed Call Pickup" (*97) or "Goup Call Pickup" (*98) feature codes) by another extension user D2

4.  After the pickup scenario has been perfomed, the CTI Interface generates the "ACDCallAnsweredByAgentEvent" event, which has an incorrect "answeringUserId" parameter value specified as D1 when it should be specified as D2.

 

Please could we also trouble you to provide the internal bug tracking ticket number.

 

Thank you.

Determining On-Call status from Basic Call subscription events

$
0
0

We have a web-app that subscribes for Basic Call events and displays when agents are either Signed out, Available, Unavailable or "On-Call'. Previously the On-call status was determined by directly querying the agent after receiving a call event and counting to see if the number of active calls was greater than zero.

In the interest of reducing traffic and pressure on the system, we've attempted to aquire all information strictly from the information in the received subscription events for agents (Basic Call and Call Center Agent). The only part that is unclear, is how to interpret the basic call events to determine whether an agent is "on-call" or not. The event name and/or call state in the event payload does not always seem to correlate with the on-call status displayed in the telesphere web client, or our previous version of software.

Is there a consistent way to determine whether the agent is "On-Call" strictly from subscription events, either from the basic call package, or other event packages? 

Thank you

 

Defect Report: CTI Interface Call Events Missing In Release 20...

$
0
0

Dear Forum Team,

Please accept the following defect report for the CTI Interface on BroadWorks Release 20:

 

Basic, Standard, & Advanced Call Events Not Generated For Various Non-Subscriber Device Activity

In BroadWorks Release 17, 18, and 19, call activity at non-extension (subscriber) devices generates highly useful CTI Interface events for hunt group, page groups, automated attendant, meet-me conference, voice mail, BroadWorks Anywhere, and other types of device.

In Release 20, these events are missing. For example:

1. A set of "scope"-orientated subscriptions are successfully created using one of the following CTI Interface requests: "AddEnterpriseGroupSubscriptionRequest", "AddEnterpriseSubscriptionRequest", "AddServiceProviderGroupSubscriptionRequest", or "AddServiceProviderSubscriptionRequest" for all event packages listed below:

- Basic Call.
- Standard Call.
- Advanced Call.

2. No call events are received by the application for the following call scenarios, although this is not an exhaustive list:

2a. Automated Attendant Devices: An outside external caller originates a new inbound trunk call to the public number associated with an automated attendant device within the BroadWorks Enterprise Group included in the original CTI Subscription request. No call events are received by the application at all.

2b. Voice Portal Devices: An outside external caller originates a new inbound trunk call to the public number associated with the main voice portal device within the BroadWorks Enterprise Group included in the original CTI Subscription request. No call events are received by the application at all.

2c. Hunt Group Devices: An outside external caller originates a new inbound trunk call to the public number associated with a hunt group device within the BroadWorks Enterprise Group included in the original CTI Subscription request.
- No call events are received by the application when the hunt group immediately forwards/overflows the call.
- Insufficient call events are received when hunt group calls are picked-up using the Group Pickup feature.

2d. Meet-Me Conference Devices: An outside external caller originates a new inbound trunk call to the public number associated with a meet-me conference device within the BroadWorks Enterprise Group included in the original CTI Subscription request. No call events are received by the application at all.

2e. Find-Me Group Devices: Similar to 2c.

2f. Instant Call Group Devices: Similar to 2c.

2g. Page Group Devices: Similar to 2c.

2h. Etc.


Receiving ChannelTerminatedEvent

$
0
0

 

Using CTI over TCP, I successfully create an Event Channel and User Subscription in quick succession. I receive an Event for the User Subscription (for which I send an Event Response), but I do not receive an Event for creating the Event Channel. Within 8 seconds I received ChannelTerminatedEvent.

username: IngeniusUser6@broadsoft.com

server: xsp.ihs.broadsoft.com

 

Thank you for your time, 

Can i subscribe an event package for a bulk of monitored user in a single request?

$
0
0
Dear All,
1. Can i get all presence status of monitored users with in a single request via XSI (just like CAP) if so please guide me.
Can i subscribe an event package for 20 user(Attendant Console User) in a single request. 
now am sending 20 individual request for subscribing an event package for each user. instead of that i wish to send one request for all monitored user is it possible via XSI?
Can  we send like this 
data = "<Subscription xmlns=\"http://schema.broadsoft.com/xsi\">"
+"<subscriberId>test018@tt.co.uk</subscriberId>"
+"<targetIdType>User</targetIdType>"
+"<targetId>test018@tt.co.uk</targetId>"
        +"<event>Do Not Disturb</event>"
+"<event>Basic Call</event>"
+"<event>Advanced Call</event>"
+"<expires>3600</expires>"
+"<channelSetId>" + channelSetId + "</channelSetId>"
+"<applicationId>AdvancedCallID</applicationId>"
+"</Subscription>"; 
2. Please tell me the difference betweem  <targetIdType>User</targetIdType>  , <targetIdType>Group</targetIdType> and <targetIdType>System</targetIdType>  
 
3. Shall we get all events of user from the following URL
"https://" + serverHostname +  "/com.broadsoft.xsi-events/v2.0/user/test20@tt.co.uk/subscription"  
4. In CAP we will get all events of Attendant Console User after successful registration. also we can register a bulk of user in a single request (CAP). Is the same possible in XSI ?
 
5. In XSI if we want to subscribe four different event package for a single user we have to send 4 individual http/https request (As far as i know, Can we make the same in a single request). Correct me if am wrong ?   
 
please help me 
Thanks a lot for any help
Amith

Is there any settings in XSI server to limit number of request ?

$
0
0
Dear All,
Is there any settings in XSI server to limit number of request from a channel to avoid DOS attack. If so is there is any way to get the limit. 
please respond ASAP
Thank you so much 
Amith 

Large number of events sent to event handler script after subscription

$
0
0

I'm able to subscribe succesfully with the following:

             <?xml version="1.0" encoding="UTF-8"?>
            <Subscribe xmlns="http://schema.broadsoft.com/xsi-events">
                <event>'.$event.'</event>
                <contact transport="http">
                    <uri>'.$uri.'</uri>
                </contact>
                <expires>'.$expires.'</expires>
                <applicationId>'.$applicationId.'</applicationId>
            </Subscribe>

In my $uri file, I'm logging all income requests.  When I make a phone call for testing, my log file goes from 0kb to over 7Mb as you can see here:

7.3M Jan 21 12:25 log.txt

 Which it's still not done writing to yet.  Can someone assist with a possible common mistake when this happens?

Let me know if you need any other code snippets.

Thank you.

 

Is there a way to delete unassigned numbers in the Network Server using OCI-P og XSP?

Viewing all 298 articles
Browse latest View live