自身传输从应用程序端点失败 [英] Self transfer fails from application endpoint

查看:54
本文介绍了自身传输从应用程序端点失败的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述


我正在尝试使用UCMA4创建辅导功能。我现在就开始工作了,但是只有当教练打电话时。(因为会议中已经有apppoint addres,所以我不能再从会议中呼叫了。因此我实际上是
想要使用生成的id呼叫会议。我阅读的所有示例都取决于自我转移发起的背靠背呼叫。问题是,我无法使用lync-client端点和来自应用程序端点的b2b进行自我转移。


MSDN中的示例也因此无效(至少,尝试转移时抛出异常)。找出出错的地方有点令人沮丧,但是在调用转移时会抛出异常。


我在调用远程目标(pstn行)时让自身转移工作:

 

call1.EndEstablish(call1.BeginEstablish(" tel:+ 316123456",new CallEstablishOptions(), null,null));

Console.WriteLine(" Start transfer");

call1.EndTransfer(call1.BeginTransfer(call1,null,null));

Console.WriteLine(" Transfer complete");


但是当在Lync端点上调用传输时,客户端上的第二个窗口打开,我收到此错误

 

附加信息:从网络收到491(请求待处理)响应,操作失败。有关详细信息,请参阅异常详细信息。

//必须喜欢这些"请参阅异常详细信息以获取更多信息"-thing ...异常detials要么根本不存在,要么为空,据我所知: /

虽然有时我收到了"远程端点不支持转移" - 错误。


所以我尝试启动对应用程序端点的调用(因此我可以设置一个带有生成的id到会议的呼叫)并尝试转移原始呼叫,但没有成功。我读了一些关于默认情况下关闭applicationendpoints的转移,
但是当添加 

 static void Call_TransferReceived(object sender,AudioVideoCallTransferReceivedEventArgs e) 
{
Console.WriteLine("在腿上的B2B上请求转移");
e.Accept(null); //我读到这就是让它工作所需要的一切......
}




事件被调用,但传输永远不会完成。


这让我疯狂。我现在尝试了很多设置(我正在失去对我已经尝试过并且在圈子中运行的调用的记录),但在我看来,我必须在某个地方设置一个简单的设置,从msdn的所有例子
我认为它应该工作。


我缺少什么?


谢谢!


BTW,稍微相关(我猜)当我想要'代理'(来自会议的b2b呼叫,朝着lync客户端)被b2b呼叫替换为响应组时,会发生奇怪的事情(响应组很疯狂,只是继续拨打电话,而不是选择


客户的电话)。是否有一种简单的方法,嗯......让它工作?




编辑14/5


我仍然没有办法让这个工作。我能提出的最简单的例子是一个简单的出站拨号器。再说一次:当我在sipUri1中输入一个数字时,该示例有效。在"传输操作失败"中使用sipUri的结果。


(这解决了我的问题 - 我也可以在其中加入扩展号码)。

 static ApplicationEndpoint appEndpoint; 

静态AudioVideoCall马蹄莲;
静态AudioVideoCall callb;
private static void testA()
{
//创建对话和通话。

Conversation conva = new Conversation(appEndpoint);
Conversation convb = new Conversation(appEndpoint);

calla = new AudioVideoCall(conva);
callb = new AudioVideoCall(convb);
calla.BeginEstablish(sipUri1,new CallEstablishOptions(),callEstablished,calla);
callb.BeginEstablish(sipUri2,new CallEstablishOptions(),callEstablished,callb);
}

private static void callEstablished(IAsyncResult ar)
{
CallMessageData data = null;
尝试
{
AudioVideoCall call = ar.AsyncState as AudioVideoCall;

call.EndEstablish(ar);

if(calla.State == CallState.Established&&& callb.State == CallState.Established)
{
data = calla.EndTransfer(calla.BeginTransfer( callb,null,null));
}
}
catch(RealTimeException e)
{
Console.WriteLine(e.ToString());
}
}

任何帮助都将不胜感激!

解决方案

我不确定你真正想做什么。 / p>

如果您想在会议中拨打电话,并在您的ucma应用程序中保持对呼叫的控制,您应该使用B2B呼叫,其中第一站是您要处理的呼叫,第二站是对会议目标的新呼叫。


关于自我转移,然后(据我所知),selftransfer是一个呼叫使用BeginTransfer与呼叫本身作为callToBeReplaced参数,如下所示:

 avCall.BeginTransfer(
avCall,
result =>
{
avCall.EndTransfer(结果);
},
avCall);

这应该给你的新电话appEndpoint的CallReceived事件,您可以使用CallReceivedEventArgs< AudioVideoCall>事件的e,并调用e.CallToBeReplaced asnd处理一个selftransfer与此。


您可能会发现这些链接很有用:


http:// blogs.claritycon.com/blog/2010/12/moving-calls-between-conferences-in-ucma-3-0 /


http://blog.greenl.ee/2011 / 08/20 /切换的Lync呼叫参与者与 - UCMA /


Hi,

I'm trying to create a coaching functionality with UCMA4. I got it to work now, but only when the coach calls in. (because there's already a call in the conference with the apppoint addres, so i can't call out from the conference anymore. Thus i actually want to call in on the conference with a generated id) All the examples i read depend on back-to-back calls initiated by a self-transfer. Problem is, i can't get the self transfer to work with lync-client endpoints and b2b from the application endpoint.

Examples from MSDN also do not work because of this (at least, the exceptions are thrown when trying to transfer). It was a bit frustrating to find out what went wrong, but when calling the transfer a exception is thrown.

I get the self transfer to work when calling a remote destination (pstn line):

call1.EndEstablish(call1.BeginEstablish("tel:+316123456", new CallEstablishOptions(), null, null));

Console.WriteLine("Start transfer");

call1.EndTransfer(call1.BeginTransfer(call1, null, null));

Console.WriteLine("Transfer complete");

But when calling the transfer on a Lync endpoint, a 2nd window on the client is opened and i receive this error

Additional information: A 491 (Request Pending) response was received from the network and the operation failed. See the exception details for more information.

//Gotta love these "see the exception details for more info"-thing... Exception detials either none existent or empty for as far as i can tell :/

Although on occasion i received a "remote endpoint does not support transfer"-error.

So i tried to initiate a call to the application endpoint (so i can setup a call with generated id to the conference) and tried to transfer the original call, without succes. I read something about transfers on applicationendpoints being off by default, but when adding 

static void Call_TransferReceived(object sender, AudioVideoCallTransferReceivedEventArgs e)
{
     Console.WriteLine("Transfer requested on B2B in leg");
     e.Accept(null); //I read this was all that is needed to make it work...
}


the event gets called, but the transfer never completes.

It's driving me nuts. I tried so many setups now (i'm losing track of which call to what i've already tried and running in circles because of that), but it seems to me there must be a simple setting somewhere i'm missing out on, as from all the examples from msdn i take it simply should work.

What am i missing?

Thanks!

BTW, slightly related (i guess) When i want the 'agent' (a b2b call from the conference, towards a lync client) be replaced by a b2b call to a response group, strange things happen (response group is going nuts, simply keeps on calling in spite of picking up

the call by the client). Is there an easy way to, well.. ehh.. make it work?


Edit 14/5

I'm still unsuccesfull to get this to work. The simplest example i could come up with is a simple outbound dialer. Again: when i put a number in sipUri1, the example works. Use sipUri's result in "The transfer operation failed".

(which solves my problem a little bit - i can also put extension numbers in it to work).

        static ApplicationEndpoint appEndpoint;

        static AudioVideoCall calla;
        static AudioVideoCall callb;
        private static void testA()
        {
            // Create a conversation and a call.

            Conversation conva = new Conversation(appEndpoint);
            Conversation convb = new Conversation(appEndpoint);

            calla = new AudioVideoCall(conva);
            callb = new AudioVideoCall(convb);
            calla.BeginEstablish(sipUri1, new CallEstablishOptions(), callEstablished, calla);
            callb.BeginEstablish(sipUri2, new CallEstablishOptions(), callEstablished, callb);
        }

        private static void callEstablished(IAsyncResult ar)
        {
            CallMessageData data = null;
            try
            {
                AudioVideoCall call = ar.AsyncState as AudioVideoCall;

                call.EndEstablish(ar);

                if (calla.State == CallState.Established && callb.State == CallState.Established)
                {
                   data = calla.EndTransfer(calla.BeginTransfer(callb, null, null));
                }
            }
            catch (RealTimeException e)
            {
                Console.WriteLine(e.ToString());
            }
        }

Any help would be greatly appreciated!

解决方案

I'm not sure what you actually want to do.

If you want to place a call in a conference, and keep control of the call within your ucma app, you should use a B2B call where the first leg is the call you want to handle, and the second leg is a new call to the conference target.

Regarding the self-transfer, then (as far as I know), the selftransfer is when a call use BeginTransfer with the call itself as callToBeReplaced parameter like this:

avCall.BeginTransfer(
   avCall,
   result =>
   {
      avCall.EndTransfer(result);
   },
   avCall);

This should place a new call to your CallReceived event of your appEndpoint, where you can use the CallReceivedEventArgs<AudioVideoCall> e of the event, and call e.CallToBeReplaced asnd handle a selftransfer with this.

You might find these links useful:

http://blogs.claritycon.com/blog/2010/12/moving-calls-between-conferences-in-ucma-3-0/

http://blog.greenl.ee/2011/08/20/switching-lync-call-participants-with-ucma/


这篇关于自身传输从应用程序端点失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆