共用方式為


逐步解說:建立 UII 應用程式配接器

 

發行︰ 2016年11月

適用於: Dynamics 365 (online)、Dynamics 365 (on-premises)、Dynamics CRM 2013、Dynamics CRM 2015、Dynamics CRM 2016

如果您要將外部應用程式與 Unified Service Desk 整合,可以建立應用程式配接器。Microsoft Dynamics 365 提供建立應用程式配接器的 Microsoft Visual Studio 範本。 此範本會提供基本程式碼做為註解,協助您開始建立應用程式配接器。

在此逐步解說,會建立外部應用程式 QsExternalApp 並在 Unified Service Desk 中託管它。 您接著建立與設定一個應用程式配接器 ExternalApplicationAdapter,讓外部應用程式可以與 Unified Service Desk 互動。 外部應用程式有四個標籤:客戶的姓氏、名字、地址和識別碼各一個,以及四個對應的文字方塊會顯示 Unified Service Desk 中的值。

本節內容

先決條件

步驟 1:建置範例外部應用程式

步驟 2:在 Microsoft Dynamics 365 中設定外部應用程式。

步驟 3:測試外部應用程式

步驟 4:建立應用程式配接器

步驟 4:在 Dynamics 365 設定應用程式配接器

步驟 5:測試應用程式配接器

先決條件

  • Microsoft .NET Framework 4.5.2

  • Unified Service Desk 用戶端應用程式,這是測試託管控制項所需的。

  • Microsoft Visual Studio 2012、Visual Studio 2013 或 Visual Studio 2015

  • Visual Studio 2012Visual Studio 2013Visual Studio 2015 的 NuGet 套件管理員

  • Visual Studio 的 Microsoft Dynamics 365 SDK 範本,包含 UII 託管控制項專案範本。 您可以用下列其中一個方式取得它:

    • 下載 CRM SDK 範本。 按兩下 CRMSDKTemplates.vsix 檔案,將範本安裝在 Visual Studio 中。

    • 下載並解壓縮 CRM SDK 套件。 移至 SDK 的 SDK\Templates 資料夾,然後按兩下 CRMSDKTemplates.vsix 檔案,將範本安裝在 Visual Studio 中。

步驟 1:建置範例外部應用程式

  1. 下載 UII SDK 套件

  2. 按兩下套件檔案,解壓縮內容。

  3. 瀏覽至 <ExtractedFolder>\UII\SampleCode\UII\AIF\QsExternalApp 資料夾,然後開啟 Visual Studio 中的 Microsoft.Uii.QuickStarts.QsExternalApp.csproj 檔案。

  4. 按 F5 鍵或選取 [偵錯] > [開始偵錯],建立範例外部應用程式。 在專案的 /bin/debug 資料夾中建立應用程式 (Microsoft.Uii.QuickStarts.QsExternalApp.exe)。

    範例外部應用程式

步驟 2:在 Microsoft Dynamics 365 中設定外部應用程式。

在此步驟中,您將建立外部託管應用程式類型的託管控制項以顯示 Windows Forms 應用程式。

  1. 登入 Microsoft Dynamics 365

  2. 按一下或點選導覽列上的 [Microsoft Dynamics 365],然後選取 [設定]。

  3. 按一下或點選 [設定] > [整合服務台] > [託管控制項]。

  4. 按一下 [新增]。

  5. 在 [新增託管控制項] 頁面上,指定下列值:

    欄位

    名稱

    QsExternalApp

    USD 元件

    CCA 託管應用程式

    託管應用程式

    外部託管應用程式

    應用程式是全域的

    已核取

    顯示群組

    MainPanel

    配接器

    使用無配接器

    應用程式是動態的

    外部應用程式 URI

    Microsoft.Uii.QuickStarts.QsExternalApp.exe

    應用配接器設定畫面

    Unified Service Desk 外部應用程式代管設定

  6. 按一下 [儲存]。

步驟 3:測試外部應用程式

  1. 將應用程式從 Visual Studio 專案輸出資料夾 (<ProjectFolder>\bin\debug) 複製到 Unified Service Desk 應用程式目錄。 在此案例下,會將 Microsoft.Uii.QuickStarts.QsExternalApp.exefile 複製到 C:\Program Files\Microsoft Dynamics CRM USD\USD 目錄。

  2. 執行Unified Service Desk用戶端連線到您的 Microsoft Dynamics 365 伺服器。

  3. 在成功登入,您會在桌面上看到 [範例外部應用程式] 按鈕。

  4. 選擇 [範例外部應用程式],檢視Unified Service Desk中託管的外部應用程式。

Unified Service Desk 中的範例外部應用程式

注意

此時,欄位是空白,因為您只是在Unified Service Desk中託管應用程式。 若要從Unified Service Desk填入欄位值,您必須建立應用程式配接器,如下一個步驟所示。

步驟 4:建立應用程式配接器

  1. 啟動 Microsoft Visual Studio 並建立新的專案。

  2. 在 [新增專案] 對話方塊:

    1. 從已安裝的範本清單中,展開 [Visual C#],然後選取 [Dynamics 365 SDK 範本] > [Unified Service Desk] > [UII Application Adapter]。

    2. 指定專案的名稱和位置,然後按一下 [確定] 建立新的專案。

      Visual Studio 中的外部應用程式配接器

  3. 在 [方案總管] 窗格中,展開 [參考] 區段,以確保正確解析所有組件參考。

  4. 開啟 AppAdapter.cs 檔案並加入下列程式碼行,為類別定義的頁面上的每個元件設定位置。

    // Set up your locations for each component on the page.
            // If you wish, you could use Spy++ to get the actual names as well.
            // First Name text box
            int intFirstNameCoordX = 47;
            int intFirstNameCoordY = 32;
            // Last Name text box
            int intLastNameCoordX = 223;
            int intLastNameCoordY = 32;
            // Address Text box
            int intAddressCoordX = 47;
            int intAddressCoordY = 81;
            // Customer ID text box
            int intIDCoordX = 47;
            int intIDCoordY = 126;
    
  5. 將下列程式碼新增至 NotifyContextChange 定義,通知應用程式內容已變更。 如需詳細資訊,請參閱NotifyContextChange

    public override bool NotifyContextChange(Context context)
            {
                IntPtr ptr = MainWindowHandle;
                // Find the control (first name) by position
                IntPtr childHwnd = Win32API.FindWindowByPosition(ptr, new Point(intFirstNameCoordX, intFirstNameCoordY));
                // Fill data out
                Win32API.SetWindowTextAny(childHwnd, context["firstname"]);
                // Find the control (last name) by position
                childHwnd = Win32API.FindWindowByPosition(ptr, new Point(intLastNameCoordX, intLastNameCoordY));
                // Fill out the data
                Win32API.SetWindowTextAny(childHwnd, context["lastname"]);
                childHwnd = Win32API.FindWindowByPosition(ptr, new Point(intAddressCoordX, intAddressCoordY));
                Win32API.SetWindowTextAny(childHwnd, context["address1_line1"]);
                childHwnd = Win32API.FindWindowByPosition(ptr, new Point(intIDCoordX, intIDCoordY));
                Win32API.SetWindowTextAny(childHwnd, context["CustomerID"]);
                // Hands control back over to the base class to notify next app of context change.
                return base.NotifyContextChange(context);
    
            }
    
  6. 將下列程式碼新增至 DoAction 的覆寫定義,使用來自 Unified Service Desk 的值更新表單欄位。

    public override bool DoAction(Microsoft.Uii.Csr.Action action, RequestActionEventArgs args)
            {
                IntPtr ptr;
                IntPtr childHwnd;
                switch (args.Action)
                {
                    case "UpdateFirstName":
                        // Get locations of what you want to update and handles
                        ptr = MainWindowHandle;
                        childHwnd = Win32API.FindWindowByPosition(ptr, new Point(intFirstNameCoordX, intFirstNameCoordY));
                        // Populate data into fields
                        Win32API.SetWindowTextAny(childHwnd, args.Data);
                        break;
                    case "UpdateLastName":
                        // Get locations of what you want to update and handles
                        ptr = MainWindowHandle;
                        childHwnd = Win32API.FindWindowByPosition(ptr, new Point(intLastNameCoordX, intLastNameCoordY));
                        // Populate data into fields
                        Win32API.SetWindowTextAny(childHwnd, args.Data);
                        break;
                }
                return base.DoAction(action, args);
            }
    
  7. 儲存專案,然後建置它 ([建置] > [建置方案])。 在專案建置成功之後,於專案資料夾的 \bin\debug 資料夾中產生組件 (ExternalApplicationAdapter.dll)。 您稍後需要此組件,以測試和使用應用程式配接器。

步驟 4:在 Dynamics 365 設定應用程式配接器

  1. 登入 Microsoft Dynamics 365。

  2. 選擇導覽列上的 [Microsoft Dynamics 365],然後選取 [設定]。

  3. 選擇 [設定] > [Unified Service Desk] > [託管控制項]。

  4. 從託管控制項清單中,選取 QsExternalApp 託管控制項。

    Unified Service Desk 中的託管控制項

  5. 在 [配接器設定] 區段,指定下列值:

    欄位

    配接器

    使用配接器

    URI

    ExternalApplicationAdapter

    類型

    ExternalApplicationAdapter.AppAdapter

    Dynamics 365 中的外部配接器設定

    注意

    [URI] 是您的組件名稱,而 [類型] 是您的組件 (dll) 的名稱後面接著句點 (.), 最後是您的 Visual Studio 專案中的類別名稱。 在這個範例中,組件名稱是 ExternalApplicationAdapter,而類別名稱是 AppAdapter,這是當您建立應用程式配接器時預設的類別名稱。

  6. 按一下 [儲存] 儲存變更。

步驟 5:測試應用程式配接器

  1. 將包含應用程式配接器定義的組件從 Visual Studio 專案輸出資料夾 (<ProjectFolder>\bin\debug) 複製到Unified Service Desk應用程式目錄。 在此案例下,會將 ExternalApplicationAdapter.dll 檔案複製到 c:\Program Files\Microsoft Dynamics CRM USD\USD 目錄。

  2. 執行Unified Service Desk用戶端連線到您的 Microsoft Dynamics 365 伺服器。

  3. 在成功登入,您會在桌面上看到範例外部應用程式。

  4. 選擇 [搜尋],然後選擇 [連絡人] 並選取連絡人。 在此案例中,選取 [Patrick Sands]。

    Unified Service Desk 中的連絡人清單

  5. 按一下 [範例外部應用程式],您會看到填入客戶的名字、姓氏、地址和識別碼。

    外部應用程式中的客戶資訊

注意

此逐步解說示範如何在外部應用程式中顯示或讀取來自 Unified Service Desk 的資料。 若要了解如何從外部應用程式更新 Unified Service Desk 中的資料,請參閱 逐步解說:建立 UII Windows Forms 託管控制項

另請參閱

使用 UII 配接器,與外部和 Web 應用程式互動

Unified Service Desk 2.0

© 2017 Microsoft. 著作權所有,並保留一切權利。 著作權