天天看點

Dynamics 365推送Model-driven app内通知功能介紹

我是微軟Dynamics 365 & Power Platform方面的工程師/顧問羅勇,也是2015年7月到2018年6月連續三年Dynamics CRM/Business Solutions方面的微軟最有價值專家(Microsoft MVP),歡迎關注我的微信公衆号 MSFTDynamics365erLuoYong ,回複461或者20211228可友善擷取本文,同時可以在第一間得到我釋出的最新博文資訊,follow me!

以前做項目的時候很希望有一個功能,進入Dynamics 365後發送一些通知給使用者,比如通知使用者某些Case快到期了需要盡快處理,以前或許隻能通過不是很好的曲線方式,比如每個Model-driven App都可以設定一個Welcome page,這是個HTML Web資源,可以用來展示想展示的内容,但是這個Welcome page使用者第一次看到後可以選中以後不再展示,這樣下次登入就看不到了。

Dynamics 365推送Model-driven app内通知功能介紹

最初寫作本文時候有個Preview Feature出來了,就是以前一直想要的通知功能,官方的介紹文檔見 ​​Send in-app notifications within model-driven apps (preview)​​ ,注意該功能不一定所有區域可用,我寫作本文時候包括中國大陸版本也是可以使用的,而且Preveiw Feature不是為生産準備的,一般不應用于生産環境。

2022年6月9日補充,該Feature已經在2022年5月份GA了,可以放心使用了。

首先需要為你想要展示應用内通知(in-app notification)的Model-driven App啟用這個功能,這個需要知道App的唯一名稱,可以通過在App Designer中打開這個app就可以看到,比如我這個app的唯一名稱是 Customerservicehub,

Dynamics 365推送Model-driven app内通知功能介紹

還可以通過将Model-driven app添加到解決方案中,Name列顯示的值便是app的唯一名稱。

Dynamics 365推送Model-driven app内通知功能介紹

然後我們進入該App的任何一個頁面,按F12打開開發者工具在Console這個Tab運作類似如下的代碼,運作結果顯示Promise不要緊,可以看Network該請求的結果,如果請求完成傳回 204就成功。

fetch(window.origin + "/api/data/v9.1/SaveSettingValue()",{
 method: "POST", 
   headers: {'Content-Type': 'application/json'},
   body: JSON.stringify({AppUniqueName: "Customerservicehub", SettingName:"AllowNotificationsEarlyAccess", Value: "true"})
   });      
Dynamics 365推送Model-driven app内通知功能介紹

強制重新整理下頁面會看到右上角多了一個鈴铛一樣的圖示,這個就是我們需要的通知功能啟用了,點選下,目前顯示沒有通知。

Dynamics 365推送Model-driven app内通知功能介紹

GA後啟用應用内通知更簡單了,我這裡摘抄官方文檔的方法如下:

  1. Sign in to Power Apps.
  2. Open the solution that contains the model-driven app.
  3. Select the model-driven app and clickEdit split menu to open using the modern app designer
  4. OpenSettings and switch to Upcoming
  5. Enable "In-app notifications"
    Dynamics 365推送Model-driven app内通知功能介紹
  6. ClickSave to save the settings change
  7. ClickPublish on the model-driven app

在講如何建立通知之前我們先講普通使用者如何才能接收通知,這裡我就不講普通使用者如何才能建立通知了,一般我們用高權限賬戶來建立,根據官方文檔,需要如下這些權限,這三個實體都在角色權限設定的【自定義實體】這個tab中。

實體邏輯名 英文顯示名 簡體中文顯示名 最低權限
appnotification Notification 通知 個人級别讀
settingdefinition Setting Definition 模型驅動應用使用者設定

建立

追加

appusersetting Model-Driven App User Setting 設定定義

追加到

我這裡先講使用前端代碼建立的方法,示例如下,各個參數的含義和預設值我就不講解了,請參考官方文檔:

var systemuserid = "eb8a38b6-8a2a-ec11-b6e6-000d3a806b15";
var notificationRecord = 
{
    "title": "過年了,請趕緊處理完手裡的Case",
    "body": "親,2022年就要來臨,您手裡還有未處理完的Case,請抓緊時間處理,預祝新年快樂!",
    "[email protected]": "/systemusers(" + systemuserid + ")",
    "data": JSON.stringify({
   "actions": [
    {
        "title": "檢視案例",
        "data": {
    "url": "?pagetype=entitylist&etn=incident&viewid=00000000-0000-0000-00aa-000010001028&viewType=1039"
    }   
    }
   ]
  })
}
Xrm.WebApi.createRecord("appnotification", notificationRecord).
  then(
      function success(result) {
          console.log(`通知建立成功,ID=${result.id}`);
      },
      function (error) {
          console.log(error.message);
      }
  );      

看到的效果如下圖,會自動展開一陣子,過一會兒會收起來,點選象征通知的鈴铛圖示又可以看到這個通知。點選通知右上角的關閉圖示可以清除這條消息,點選【Dismiss all】可以清除所有的消息,我在國際版本上測試,清除後就不顯示了,但是記錄并未從appnotification中删除,但是在中國大陸版本上,清除後過會兒或者重新登入還是會顯示。如果和我描述的不同,請以自己測試為準。

Dynamics 365推送Model-driven app内通知功能介紹

既然通過前端可以建立,那麼通過Cloud flow也開始可以建立的。我這裡用個手工觸發的Cloud flow示範下。在建立通知時候發現兩個同名的通知,選哪個?選前面哪個,如果記不住也沒有關系,兩個都嘗試下,如果顯示的列是通知相關的就八九不離十了。

Dynamics 365推送Model-driven app内通知功能介紹

當然更加靠譜的是檢視這個步驟的代碼,點選右上角的更多符号,選擇【Peek code】

Dynamics 365推送Model-driven app内通知功能介紹

如果entityName是 appnotifications 就說明選對了。

Dynamics 365推送Model-driven app内通知功能介紹

我這個建立通知的步驟設定如下:

注意如果Expiry (seconds)字段設定了值的話,建立消息經過這個指定的秒數之後這個通知記錄會自動删除。

Dynamics 365推送Model-driven app内通知功能介紹

展示的效果如下圖:

Dynamics 365推送Model-driven app内通知功能介紹

我就不示範通過組織服務來建立通知了,應該也是可以。最後,正如官方文檔指出的那樣,消息會推送給這個通知記錄的owner,别人看不到。如果要推送給一組人呢?目前沒有好的辦法,就是為每個要得到這個通知的使用者建立一條通知,每條通知的負責人就是通知的推送對象。

值得一體的是,通知的标題和正文都支援markdown:

Text Style Markdown
Bold

​**Bold**​

Italic

​_Italic_​

Bullet list

​- Item 1\r- Item 2\r- Item 3​

Numbered list

​1. Green\r2. Orange\r3. Blue​

繼續閱讀