Picture of JiangNan
Registered 6 years 130 days
JiangNan Monday, 1 April 2019, 08:46 PM
Re: SDK, App Pltform and v13r1
Hi Christoph,
Thank you so much for that. It is user rights issue.
Since we are developing a contact center solution and performance is critical, the solution will ideally be implemented base on WebSocket.
With regarding to WebSocket support, I have some questions:
  • Can we use the SDK to develop the solution running on a windows box?
  • We'd like to start reviewing v13r1 as soon as possible, I assume we need v13r1 firmware for the switch to enable us to run the SDK. Where can we download the beta software?
Thanks
Josie
Picture of JiangNan
Registered 6 years 130 days
JiangNan Monday, 1 April 2019, 09:04 PM
Re: Soap API Initailize failed with 401 unauthorized code
Hi Christoph,
More info on our product, it is a contact center solution currently all deployed on Windows platform. That is the question for SDK support on windows platform. To enable us support innovaphone, we need third party call control which enables us to get a persistent connection to the switch, enumerate all devices, open devices, call controls such as make call, answer call, transfer call(both blind and consultation) for all monitored devices, call monitoring and recording, other features such as call forwarding set etc. which ideally runs in a Windows box.
Picture of Christoph Künkel (innovaphone)
Moderator Registered 15 years 246 days
Christoph Künkel (innovaphone) Monday, 1 April 2019, 10:32 PM in response to JiangNan
Re: Soap API Initailize failed with 401 unauthorized code
Regarding the question of you can run your app on Windows: the vanilla way is to implement it on our App Platform. But you can also run it on whatever box. See the fish-help.png article I quoted in my l last post. Although it talks about PHP it is applicable for other languages too.
Regarding the v13 beta download, see fish-help.png 13r1 Beta

Good luck!
Christoph
Picture of JiangNan
Registered 6 years 130 days
JiangNan Monday, 1 April 2019, 11:13 PM
Re: Soap API Initailize failed with 401 unauthorized code
OK. It looks like we have to go for the AppPlatform. We have a few more questions about v13r1/appplatform and beta status:
Is v13beta in stable status for us to install and develop app on?
When is the official release date for v13r1 as we have to plan our project base on that date?
Do we need to standup another Linux box for AppPlatform or we can run it from the same box as the switch? Could you please point to me to the link for AppPlatform setup?
Do we need to write our own app service running on AppPlatform for the application to connect to the switch or the application can directly connect to a existing app service to do that?
Thanks
Josie
Picture of JiangNan
Registered 6 years 130 days
JiangNan Tuesday, 2 April 2019, 04:22 AM
Re: Soap API Initailize failed with 401 unauthorized code

Hi Christoph,

I have read through the link(PHP app). If I’m reading the documentation correctly, WebSocket is only available for us to consume starting in v13r1 via existing App services(Devices, Users etc). Is that correct?

The problem is that we cannot support old version of innovaphone firmware if it is the case.

Is there any way we can directly communicate with the switch bypassing the app services completely using WebSocket then we can support version prior to v13 using WebSocket?

For example, cross platform compile your SDK to windows version so we can use your libraries that way. Is that possible?

Or can we just get a raw WebSocket connection from our application to the switch and only use your JSON message definitions(as defined below) to communicate with the switch(It seems the switch takes login request)? I assume the default ports would be 80/443, correct?

 

PBX APIs

 

The following APIs can be used with all AppWebsocket connections with the PBX. A permission for the API needs to be enabled at the app object.

 

Signal

This is the generic JSON signaling signaling protocol, which is mapped by the PBX to any standard Voip Signaling like SIP or H.323

PbxSignal

Protocol to register to the PBX and do signaling with the JSON signaling protocol

EpSignal

This protocol allows to attach to a device registered to the innovaphone PBX and intercept all signaling to and from this device

RCC

Perform remote call control operations with registered endpoints

PbxMessages

The protocol to retrieve stored chat messages

PbxApi

Presence monitoring and management of favourites

PbxAdminApi

Configuration of the PBX and pseudo objects

Replication

Replication of tables. Use "api":"PbxTableUsers" to replicate the PBX user objects to your app service.

Services

Finding and authenticating against other app services

 

Many thanks!

Josie

Picture of Christoph Künkel (innovaphone)
Moderator Registered 15 years 246 days
Christoph Künkel (innovaphone) Tuesday, 2 April 2019, 09:14 AM
Re: Soap API Initailize failed with 401 unauthorized code
Josie,

you're correct: the WebSocket interface is available from v13r1. The WebSocket interfaces are provided partly by the PBX and partly by some Service running on the App Platform. But from v13r1 on, the App Platform is an integral part of the system, so it doesn't matter where they come from. There is no need of "bypassing the app services". All the interfaces provided by the PBX can be consumed with no App Service "in between". So this is probably what you refer to as "raw WebSocket".

It's always difficult to say, but If I'd be in your shoes, I'd start the development with the assumption that 13r1 or up is available and base it on the new interfaces.

Also, I would have a design where my own "CC App Service" runs on the App Platform and provides services that are made available to customers through (JavaScript) Apps running in the myApps client. This way, you can leverage all the benefits the system has for you.

I understand that your core systems runs on windows and will continue to do so, which is fine. You would then have your App Service talk to your core system by whatever means (possibly WebSocket again).

If downward compatibility is important to you, you may consider implementing some limited basic functions using the old SOAP interface to the PBX. But I wouldn't recommend starting an entire new development on old interfaces.

Yes, the default ports are 80/443.

Hope that helps,

Christoph
Picture of JiangNan
Registered 6 years 130 days
JiangNan Wednesday, 10 April 2019, 03:43 AM in response to JiangNan
Re: SDK, App Pltform and v13r1
Hi there,
We have started to review the "RCC" API via websocket using v13r1 beta for our contact center solution. I managed to establish a connection to the PBX with authentication done using a APP object. Then I tried to invoke "Initialize" using the same connection but did not see PBX sending "InitializeResult" back to my test application.
here is the message sent: I tried both "grp" true and false, this makes no difference:
{"mt":"Initialize","grp":true,"limit":100,"api":"RCC","src":"CC-Innova"}
My user(80140) and App object(JosieApp) configuration, please refer to attached document.
Could you please let me know what I did wrong?
Many thanks!
Josie
Appobjectconfig.docx
Picture of JiangNan
Registered 6 years 130 days
JiangNan Wednesday, 10 April 2019, 04:40 AM
Re: SDK, App Pltform and v13r1
Also I'm following your GitHub for latest SDK documentation and did a pull this morning. Hopefully that is the right one
Josie
2013
Moderator Registered 16 years 129 days
Guntram Diehl (innovaphone) Wednesday, 10 April 2019, 02:35 PM
Re: SDK, App Pltform and v13r1
Sorry there is one important info in the SDK documentation missing: If you login to an App object, you have to set the "app" property in the AppLogin Message.

I Otherwise you login is just a normal user login and you do not get access to any APIs not intended for users.

I added a simple RCC Sample to illustrate this.

In the App Object you should only set the RCC Flag for this sample, if you want to do it the same way as I did.
RCC.htm
2013
Moderator Registered 16 years 129 days
Guntram Diehl (innovaphone) Wednesday, 10 April 2019, 02:36 PM
Re: SDK, App Pltform and v13r1
And the js file RCC.js
2013
Moderator Registered 16 years 129 days
Guntram Diehl (innovaphone) Wednesday, 10 April 2019, 03:02 PM in response to Guntram Diehl (innovaphone)
Re: SDK, App Pltform and v13r1
Currently dummy values for domain, sip, guid and dn are needed in the AppLogin, with beta3 these properties can be ommited.
2013
Moderator Registered 16 years 129 days
Guntram Diehl (innovaphone) Wednesday, 10 April 2019, 12:26 PM in response to JiangNan
Re: SDK, App Pltform and v13r1
The message looks ok to me. I will check and add a working sample to the SDK.

The config is ok, but you don't need all the flags on the App Object. Just RCC as Api should be ok. Maybe there is a problem with all the other flags, because we would typically not try this.
Picture of JiangNan
Registered 6 years 130 days
JiangNan Wednesday, 10 April 2019, 09:56 PM
Re: SDK, App Pltform and v13r1
Thank you! It works.
Picture of JiangNan
Registered 6 years 130 days
JiangNan Thursday, 11 April 2019, 04:45 AM in response to Guntram Diehl (innovaphone)
Re: SDK, App Pltform and v13r1
Hi there,
Here is the feedback so far for the web socket interface:
  • Devices: on Soap interface, there is a API devices() to enum all devices for a user. It is not present in web socket RCC documentation. Is this just a documentation issue or it is not implemented yet? We need this info.
  • Device status: Do you provide inService/outofservice status update for devices? for example, if the device is configured in the system but it is unplugged from the network. It is essential we know the status of the device before we trigger any operations on it.
  • UserIntializeResult issue 1: it only returns the id for the user but it does not provide which user it is for. It is difficult to work out which user this id is for in multi user initialize situation. Currently I get round this issue by setting "src" of UserIntialize to the user's cn. But I think the API itself should apply the linkage automatically.
  • UserIntializeResult issue 2: use "return" as a variable name. This is a key word in many languages so it would be great to change it something else to avoid us to escape it in the implementation.
  • Currently many xxxxResult come back from pbx do not contain meaningful info in it. For example, {"api":"RCC","src":"CC-Innova","mt":"UserRetrieveResult"}. Is this going to change? Would be nice we know if the command we execute succeeded or not.
Josie
2013
Moderator Registered 16 years 129 days
Guntram Diehl (innovaphone) Thursday, 11 April 2019, 09:09 AM
Re: SDK, App Pltform and v13r1
Devices: The implementation of the Devices request was forgotten. We will add it. In beta3 you should have it.

Devices status: I had a quick look at SOAP and RCC and did not find it. I wonder how others get this information. Will investigate and come back to you

UserInitializeResult 1: The idea is to match Responses to Requests using the src mechanism, so what you did is more or less as intended, except we would rather use some unique id here instead of cn.

UserInitializeResult 2: We used return as property, to have it identical to SOAP. But it could still be changed. Will think about it.

xxxxResult in general: If there is no error property a result indicates that the request succeeded. Some Requests cannot fail, so there is no error property. If you find some error information missing, please tell us, we can have a look.
Picture of JiangNan
Registered 6 years 130 days
JiangNan Monday, 15 April 2019, 05:14 AM
Re: SDK, App Pltform and v13r1
Device Status: That is great!
xxxxResult in general: call control operations such as answer, clear, connect, hold, park etc. Do they never fail? If it does fail sometimes, we need some information that indicates the failure.
Park: I configured a trunk line to test this feature. There is enough information to work out Park via API for internal calls but that is not the case for external calls. The user doing the park only receives hold and r-rel/del on hold callinfo. Since there is no report for the external caller, we cannot work out if the user droping call is due to park or end call during hold
2013
Moderator Registered 16 years 129 days
Guntram Diehl (innovaphone) Monday, 15 April 2019, 08:18 AM
Re: SDK, App Pltform and v13r1
We have the error property to report errors. Still some operations never fail, like UserClear (provided you use a valid Id), or UserConnect, meaning that a Connect request is accepted. If the call is really connected you have to check on the changing call state. So this is not a synchronous Connect operation, but rather the initiation of the connect.

For Park you get as a return value a call handle for the parked call. This call should also show up on the Parked-To object. So if you park the call at the user, where the call was ringing and you already monitor this User with a UserInitialize, you should see the call there as parked call.
Picture of JiangNan
Registered 6 years 130 days
JiangNan Monday, 15 April 2019, 09:41 AM
Re: SDK, App Pltform and v13r1
OK, thanks. I have set up the web rtc client for testing while waiting for the hard phone to setup.
For the hard phone setup, is that true that it is only able to be configured through DHCP options as I cannot see any setting on the phone to allow me to configure the IP address of the PBX for registration?
For the webrtc client, is the consultation transfer enabled on it? I tried to add a consultation call but if I press "join call"(does this mean transfer) or "conference" afterwards, nothing happens.
Many thanks!
2013
Moderator Registered 16 years 129 days
Guntram Diehl (innovaphone) Tuesday, 16 April 2019, 01:55 PM
Re: SDK, App Pltform and v13r1
The fixed phone cann be configured on the phone itself (Account), on the Admin Web UI, or with provisioning if you have Users, Devices etc.

Do you use the myPBX or the myApps client for your WebRTC softphone?
Picture of JiangNan
Registered 6 years 130 days
JiangNan Wednesday, 17 April 2019, 05:24 AM
Re: SDK, App Pltform and v13r1
Thanks. Yes I figured out there is a web interface. I'm using the MyApp version of Web RTC client:
https://<PbX IP>/pbx0/appclient/131741/appclient.htm
Picture of JiangNan
Registered 6 years 130 days
JiangNan Wednesday, 17 April 2019, 05:35 AM in response to Guntram Diehl (innovaphone)
Re: SDK, App Pltform and v13r1
I started to testing transfer scenarios. However I have an issue when the hardphone(IP111) put the first call on hold when making consultation call. After just over 10 seconds, it would just drop the first call. I closely inspected wireshark trace and Innovaphone trace and found it failed on ICE connectivity checking:
LOG CALL 3 B:Rel 88002->80142 G711u,20(0,0,0)/G711u,20(0,0,0) SIP3:88002:->RS3:80142: Cause: No circuit/channel available
I'm not sure why it fails the connectivity checking on Re-INVITE.
The environment is setup like this:
Between FreeSwitch and Innovaphone, there is a sip trunk in place.
  1. A call arrives on Innovaphone ext(IP111) from FreeSwitch.
  2. Ext(IP111) answers the call. Speech path is ok.
  3. Ext(IP111) puts the call on hold.
  4. After 10 seconds , the call will be dropped by Innovaphone PBX with the error listed above.
Attached are wireshark trace and InnovaPhone Pbx Trace.
Sip Call ID: b2faa138-db61-1237-1390-31d306e70288
Any help is really appreciated
Josie
Innovatrace.zip
Picture of JiangNan
Registered 6 years 130 days
JiangNan Friday, 19 April 2019, 05:06 AM
Re: SDK, App Pltform and v13r1
A question about UserCall:
what does parameter "fty-no-cf" mean? not explained in the documentation
what does parameter "audio" mean? not explained in the documentation
"fty-no-cf": "-" is not allowed in a variable name in C#. I have to manually convert it before sending the request onto the wire. Is that possible to change it to "_" which is allowed in C#.
Thanks
Josie
2013
Moderator Registered 16 years 129 days
Guntram Diehl (innovaphone) Friday, 19 April 2019, 12:52 PM
Re: SDK, App Pltform and v13r1
The fty-no-cf is used to initiate a call with the innovaphone proprietary facility which indicates that call diversions configured at the destination are not executed.
I will update the documentation.
I will change the property to ftyNoCF, which matches better the style of the other messages then using _
2013
Moderator Registered 16 years 129 days
Guntram Diehl (innovaphone) Friday, 19 April 2019, 01:00 PM in response to JiangNan
Re: SDK, App Pltform and v13r1
audio requests a call to be established with audio instead of voice bearer capability. This is a little bit of a legacy feature coming from ISDN where a distinction was made between voice calls and audio calls. A audio call was used for modem or fax, so no voice compression was allowed.

I will update the documentation.
Picture of JiangNan
Registered 6 years 130 days
JiangNan Tuesday, 23 April 2019, 11:42 PM
Re: SDK, App Pltform and v13r1
Hi,
Installed latest v13r1 beta3 "MyApps Windows" and configured it as a softphone using the following instructions:
Check UC in the Tab licenses
Check softphone in the Tab Apps
Add a device for the user with "softphone" in the column app
It works fine for the internal calls but it keeps dropping external calls with error "Incompatible destination". I'm guessing this is to do with codec
Could you please let me know where is the place for adjusting the codec for the softphone? I'm aware that we can use https://<ip address of the phone> to configure the hardphone. Can we do the same for softphone and what the web link is?
Thanks
Josie
Picture of JiangNan
Registered 6 years 130 days
JiangNan Wednesday, 24 April 2019, 02:31 AM
Re: SDK, App Pltform and v13r1
Updated to beta3, I have a question about UserIntialize and date field "hw":
It is a string Not string array, which implies the application is only allowed to monitor one device at a time. Is this the case? Is that possible to monitor multiple devices at the same time?
Josie
2013
Moderator Registered 16 years 129 days
Guntram Diehl (innovaphone) Wednesday, 24 April 2019, 01:11 PM
Re: SDK, App Pltform and v13r1
Yes, you can do multiple UserInitialize. Which each UserInitialze you get a new handle, so that you can associate messages to devices.
With UserEnd you can end the monitoring started with UserInitialize.

I agree the UserInitialize is a little bit misleading, because you can narrow down the monitoring to a device with "hw". Without the "hw" property you can monitor the user with all devices.
Picture of JiangNan
Registered 6 years 130 days
JiangNan Monday, 6 May 2019, 06:02 AM
Re: SDK, App Pltform and v13r1
Hi,
I'm trying to configure 2 devices under the same user: one for softphone and the other using hardware phone. However, my application keeps picking the same hardware id for both phones: the one configured for the softphone. I guess this is to do with how I log into the hardware phone, what userid, user name I should use for authorization from hardware phone?
Thanks
Josie
2013
Moderator Registered 16 years 129 days
Guntram Diehl (innovaphone) Monday, 6 May 2019, 08:43 AM
Re: SDK, App Pltform and v13r1
You have to configure two devices, one for your hardphone and one for the software, with different hwid (this is checked, hwid must be unique). For the hardphone registration you have to use the hwid as registration name.

Our recommended way to register a innovaphone hardphone is to use the mac addresse of the phone for registration. The phone uses the mac address, if no name is configured.

If you use H.323/TLS for registration the built in certificate is used for authentication, so you don't need a password.

If you use the v13 provisioning it is done this way automatically.
Picture of JiangNan
Registered 6 years 130 days
JiangNan Monday, 13 May 2019, 06:27 AM
Re: SDK, App Pltform and v13r1
Hi,
Is that possible to add an interface so that we know all user/device initialization is completed? for example, in InitializeResult, adding a field to indicate the number of user/devices the API user is monitoring
Thanks
Josie
← You can define your color theme preference here