Shoretel SDK C# - Call Recordings - c#

My company is using ShoreTel's SDK to record inbound and outbound calling. We are using LineRecord to handle the recording; however, it is storing the recordings on both the phone server and in the users voice mail. The documentation says there is a way to prevent it from recording in both but doesn't say exactly how.
The code I am using for the LineRecord is:
m_STMLCtl.LineRecord(nLineID, nCallID, RoutePoint, m_STMLCtl.LineGetAddress(nLineID));
The ShoreTel STMLBrowser test application has this code:
STMLCtl.LineRecord(nLineToRecordFrom, nCallID, strExtensionToCall, strContext);
How do I prevent the voice recording from recording to the user's voice mail?

The recording function just initiates a call to the specified extension. Whatever answers that call is responsible for recording the audio. If your recording is winding up in voice mail, then somehow the call is getting to the voice mail extension. If the call hits voice mail, then the recording will be saved in the mailbox of the extension specified in strContext. The only other option is to send the call to a route point and record the audio yourself.
As a note, the better place to ask for help is the ShoreTel Developer Network group.

Related

playback on NVR according to onvif standard

i have a hikvission NVR that connecting with 1 camera, all recorded videos are saved on nvr.
I used the HIK SDK to connect and playback successfully on the NVR but my boss want to use onvif method to find and playback.
I searched for a week how to playback on NVR using onvif but found nothing. i try using onvif device manager but it show only camera, not NVR.
p/s: i am using ispy for development and found some clues.
my clues:
1. GetServices
2. GetRecordingSummary
3. FindRecordings
4. GetRecordingSearchResults
5. GetReplayUri
i tried implement base on document and code in onvif device manager software but not success
http://www.onvif.org/onvif/ver10/recording.wsdl
http://www.onvif.org/ver10/replay.wsdl
how to implement 5 step above ?
sorry for the dumb question but i am new with onvif :(
Search a lib that match the language you know. You can search here:
https://www.onvif.org/resources/
In each lib, they support method on Onvif specification, include: GetServices, GetRecordingSummary, FindRecordings, GetRecordingSearchResults, GetReplayUri, ... You can write some codes to do this. (Of course, you need a Onvif device (Onvif NVR, Onvif Camera) to comunicate with)
TIP: If you want to know what the Onvif server sent or received to Onvif device, You can use Wireshark App to catch the packet. I believe you will know more methods

How to share attachments from user to agent (Human handoff) using Bot?

i have bot made using c#. It has the feature of human off. We have integrated the solution provide by tompanna of human handoff where a agent can talk to single user at a time.Here the link of solution we used for human handoff https://github.com/tompaana/intermediator-bot-sample. Our bot is working fine and able to talk with agent with the help of this solution but major issue come when a user want to share image or any kind of attachments from user to agent or from agent to user. The bot show that image is send but user is not able to see it. Simpler case happen in the case of agent.
Image of agent while sending a attachment to user.
And also the image of user ,unable to see the image send by agent.
The sample which you are using for Human HandOff has not been updated over a year, so it gets difficult to be able to find solutions for supporting various features pertaining to the same. However, going through the sample issues, there has been a similar issue in which the sample does not support emojis, images or files to the receiving user. If a user sends any of the above mentioned features, the receiver will get a blank message as it supports only text messages.
Th tentative solution suggested by a user is to create a simple method extension to send image/file messages.You could go ahead and give it a try to see if it works for your case.
Hope this helps.
You need to edit the source code of the library to achieve what you are trying.
In this MessageRouter file , method RouteMessageIfSenderIsConnectedAsync , you can access message.Attachments , then pass it as a parameter to SendMessageAsync in line 432, then from SendMessageAsync in line 160 , you can pass it to CreateMessageActivity method and then in file ConnectorClientMessageBundle , you can access the attachment and attach it to messageActivity.

Skype API call always cancelled

I have small application which calls phone numbers in Skype and allows to record conversations.
But it doesn't work with Skype versions after 7.5. I tried both Skype4COM and direct API:
For Skype4COM call always gets status clsCancelled, FailureReason is cfrMiscError. Below example code:
Skype skype = new SKYPE4COMLib.Skype();
if (!skype.Client.IsRunning)
{
skype.Client.Start(true, true);
}
skype.Attach(skype.Protocol, true);
Call call = skype.PlaceCall("+17606604690");
For direct API call status is MISSED. I'm using following command to start a call CALL +17606604690. It is possible to start call with somebody from your contact list by starting IM with him and bringing Skype client in focus, but this approach doesn't work for mobile numbers.
I guess Skype API changed after version 7.5, because I see that other applications still able to place calls. I'm also aware about Skype URLs, but they have big delays and won't let you know if call fails.
There is some discussion of this problem here, with a work‐around:
I made a shortcut to only call the skypecall part and surprisingly, if i spam it, it starts in. A triple try-catch cycle does the trick, but to make sure, i just applied force retry until its status becomes "ringing"

Twilio mms from an Android phone within Canada using Unity3D

Target Platform : Samsung S6 - Android
Development base : Unity3D using C#
Intention :
Send a picture (MMS) shot within an app to any desired phone number within Canada. This app is supposed to be preloaded to a single Samsung S6.
Questions :
I was unable to find any Unity samples within you SDK, however I was wondering if anyone knows Unity samples for my intended use. However planned to use these scripts as first of reference.
Though the Android Phone number which is used to send MMS can be associated with Twilio the receiver would have no association with Twilio as the sender phone number is not something we would know until the photo is taken - hence is this a concern?
I see that from from the API call
// Send a new outgoing MMS by POSTing to the Messages resource */
client.SendMessage(
"YYY-YYY-YYYY", // From number, must be an SMS-enabled Twilio number
person.Key, // To number, if using Sandbox see note above
// message content
string.Format("Hey {0}, Monkey Party at 6PM. Bring Bananas!", person.Value),
// media url of the image
new string[] {"https://demo.twilio.com/owl.png" }
);
the fourth and final parameter is a URL link. Can link of the image be from any server or should it only be from twilio's server?
Thank you very much for time. Highly appreciate it.
Here you are. As far as I know this works like a charm.

Lync SDK Start Audio Video Call with Send only UI Suppression mode

I am trying to build application for conferencing using Lync SDK in UI Suppression mode, the application is close to the Meet Now feature in lync so that one user will send his Video/Audio to all other users in conversation, my code is:
// Add conversation using
_LyncClient.ConversationManager.AddConversation();
// When Conversation added add participants
// User 1 will broadcast video/audio
_Conversation.AddParticipant(_LyncClient.ContactManager.GetContactByUri(user1));
// User 2 and User 3 will only recieve audio video
_Conversation.AddParticipant(_LyncClient.ContactManager.GetContactByUri(user2));
_Conversation.AddParticipant(_LyncClient.ContactManager.GetContactByUri(user3));
// Start the audio call from user1 machine
avModality.BeginConnect(AVCallback);
// When recieve the call in user2, user 3 stop mic using mute
_Conversation.SelfParticipant.BeginSetMute(true, (ar) =>
{
_Conversation.SelfParticipant.EndSetMute(ar);
}, _Conversation.SelfParticipant);
// and same technique for video
It works but i noticed that the performance of the call is affected each time a user enters the conversation and the conversation goes to Hold then Retrive states until user is added.
How Can I start a call in one way only send (not send recive), i tried the following:
avModality.BeginConnect(AVCallback, ChannelState.Send);
but it didn't work, also i have a look on the Conversation Properties, Moadilty Properties
but nothing looks helpful.
the only thing i found related is avModality.AudioChannel.State but i can't find a way to set this property?
Can anyone help?
I managed to create a one way video call by starting an audio call from the user who is sending the video and then in ModalityStateChanged calling avModality.VideoChannel.BeginStart once the call was connected.
Hope this helps.

Categories