1

これはかなり基本的なようですが、これを行う方法をウェブ上で見つけることができませんでした。

次のコードがあります。

public static void StartChatWithUser(Microsoft.Lync.Model.Contact imContact, string title = null)
{
    try
    {
        var lyncClient = Microsoft.Lync.Model.LyncClient.GetClient();

        var conversation = lyncClient.ConversationManager.AddConversation();
        conversation.AddParticipant(imContact);
        if (!string.IsNullOrEmpty(title))
        {
            conversation.Properties[Microsoft.Lync.Model.Conversation.ConversationProperty.Subject] = title;
        }
        var im = conversation.Modalities[Microsoft.Lync.Model.Conversation.ModalityTypes.InstantMessage];
        if (im.CanInvoke(Microsoft.Lync.Model.Conversation.ModalityAction.Connect))
        {
            im.BeginConnect((ar) => { if (ar.IsCompleted) { ((Microsoft.Lync.Model.Conversation.InstantMessageModality)ar.AsyncState).EndConnect(ar); } }, im);
        }
    }
    catch( Exception x )
    {
        //Handle exception
    }
}

連絡先ウィンドウを開いてチャットを開始するため、この「並べ替え」は機能します。つまり、相手はチャットに参加するように要求されます。

他のユーザーとのチャットを開始せずに会話ウィンドウを開く方法はありますか (Lync の連絡先リストでユーザーをダブルクリックする場合と同じようにします)。

Lync Client Dev に同じ質問を投稿しました。TechNet フォーラム: http://lksz.me/s8Yn8a

前もって感謝します。


私の最終結果

MOHAMED A. SAKAR と ckeller によって提供された回答のおかげで、コードを修正しました。これが私の新しい方法です。みんなありがとう

次の using 句が必要です。

using Microsoft.Lync.Model.Extensibility;

そして、ここに新しいコードがあります:

public static void StartChatWithUser(Microsoft.Lync.Model.Contact imContact, string title = null)
{
    try
    {
        var lyncAutomation = Microsoft.Lync.Model.LyncClient.GetAutomation();

        var inviteeList = new string[] { imContact.Uri };
        var modalitySettings = new Dictionary<AutomationModalitySettings, object>();
        modalitySettings.Add(AutomationModalitySettings.SendFirstInstantMessageImmediately, false);
        if (string.IsNullOrEmpty(title))
        {
            modalitySettings.Add(AutomationModalitySettings.Subject, title);
        }

        lyncAutomation.BeginStartConversation(
            AutomationModalities.InstantMessage,
            inviteeList,
            modalitySettings,
            (ar) => { if (ar.IsCompleted) { ((Automation)ar.AsyncState).EndStartConversation(ar); }},
            lyncAutomation);
    }
    catch( Exception x )
    {
        //Handle exception
    }
}
4

1 に答える 1

1

まず、AutomationModalitySettings とその値のディクショナリを作成する必要があります。

private Dictionary<AutomationModalitySettings, object> _modalitySettings;

その後、これらのモダリティを開始する必要があります。

_modalitySettings = new Dictionary<AutomationModalitySettings, object>();
_modalitySettings.Add(AutomationModalitySettings.SendFirstInstantMessageImmediately, false);

その後、通話を開始できます

_asyncResult = _automation.BeginStartConversation(
             _chosenMode,
             _inviteeList,
             _modalitySettings,
             null,
             null);

これがお役に立てば幸いです

于 2011-10-30T08:44:18.000 に答える