我認為現在可以肯定地說這號碼管理清單第個項目已經成功了。我從社區收到了很多關於此的正面回饋。
但這並沒有阻止我更進一步,為這個專案添加更多功能。
更新加載中…
新功能和改進
本地化/格式化的電話號碼
正如您現在可能知道的那樣,我認為自己是一個數據驅號碼 巴哈馬電話號碼列表 管理清單第動的人。我對 Teams 電話真正感興趣的是,在任何情況下,每個號碼都是完整的 E.164 號碼。這種絕對性提供了極大的安全性,因為每個數字都是唯一的。就像使用者主體名稱或 GUID 一樣,沒有什麼有趣的事情發生。
但這種安全性是以可讀性為代價的。如果您以前看過這篇文章,那麼您已經知道我提出了一個使用 Python 將電話號碼格式化為本機格式的解決方案。
支援清單的 Runbook 邏輯現在還可以利用 Python 將格式化的電話號碼儲存在附加列中。這樣您就可以隨時獲得 E.164 號碼及其美化版本。
E.164 和格式化的電話號碼
對於通常使用連字符的美國號碼或日本或以色列等其他國家/地區的號碼,您可能已經註意到我刪除了連字符,即使它們是在使用電話號碼庫格式化號碼後包含的。我這樣做是為了使清單中的每個數字僅包含數字和加號。此外,這也是 Teams 管理中心顯示數字的方式。
TAC 中的美國電話號碼不顯示連字符
將 Teams 電話號碼寫入 Entra ID
當您在 Teams、Outlook 或 Microsoft 365 中的任何其他號碼管理清單第位置查看使用者的個人資料卡時,它不會顯示在 Teams 中實際配置為LineURI的電話號碼。相反,該資訊取自 Entra ID。我在 Runbook 中建立了一個變量,用於控制是否應將 Entra ID 使用者的BusinessPhones屬性設定為 Teams 中指派的LineUri。我將在本文後面解釋如何開啟或關閉此功能。
使用指派給 Entra ID 應用程式註冊的目前權限/範圍,這僅適用於在 Entra ID 中未指派任何管理員角色的使用者。如果使用者俱有管理員角色,您將收到錯誤訊息。
Microsoft Graph API 傳回的錯誤訊息
以前的用戶專欄
我新增了一個新列,顯示號碼被刪除後的前一個使號碼管理清單第用者/所有者的 UPN。這是透過我對 Power Automate Flow 的更新來實現的。請注意,該流程現在還將保留「註釋」列的值。
以前的使用者欄
開設此專欄的原因是您可以更好地了解誰以前使用過某個號碼。我確信您不想將前任執行長的電話號碼分配給新的實習生。
未分配的路由規則
當人們離開時,我們有時希望將他們未分配的號號 通與協作 溝通對於專案的 碼管理清單第碼轉發給公司中的其他人或主要號碼。這是透過路由規則完成的。但我們通常是否記得或甚至知道這些規則是過去製定的…?現在我們做到了!
新狀態:未指派(路由規則)
每個號碼都會根據租用戶配置的所有路由規則進行檢查,如果有任何符合項,則會反映在清單中。符合規則的名稱儲存在「使用者名稱」欄位中。 (因為該列不用於流觸發條件。)
如果保留號碼,這甚至可以工作。在這種情況下,狀態將變更為「保留」(路由規則)。
新狀態:保留(路由規則)
改進的號碼分配功能
我還對分配號碼進行了一些改進。如果號碼的狀態為保留(路由規則)或指派錯誤,腳本也會嘗試指派該號碼。如果發生指派錯誤,腳本將嘗試為每個新作業重新指派編號。這在例如尚未分配許可證的情況下非常有用。
此外,您現在還可以保留號碼並在「使用者號碼管理清單第主體名稱」欄位中輸入使用者的 UPN。如果該帳戶尚不存在(因此您無法填寫使用者設定檔)但您已經知道即將建立的使用者的 UPN,則這非常有用。所有這些變更都使您可以更輕鬆地提前規劃,並在建立使用者並獲得許可後讓運行手冊自動處理所有事務。
操作員欄
最後但並非最不重要的一點是,該清單現 沃沃盒 在還顯示Operator的名稱。這適用於所有類型,包括直接路由。不過,您必須在來源 CSV 中手動列出每個直接路由號碼的電信業者名稱。
新幹員專欄
更新所有元件
我很可能會在某個時候更新部署腳本,以從頭開始部署所有內容,包括所有更新。如果我能找到足夠的時間,我也可以建立一個更新腳本來更新現有部署。
但今天,我將向您展示如何在現有部署中手動實施所有更改,該部署由 Azure 自動化帳戶、清單、流程和本機來源檔案組成。
要執行這些步驟,您應該遵循並部署本文中所述的所有內容,並實施本文中所述的所有更新。
新增列
將以下列新增至 SharePoint 清單。所有欄位的類型必須為text。
評論
以前的用戶
操作員
電話號碼
將電話號碼 Python 套件新增至自動化帳戶
造訪此網站並將建置的發行版 (*.whl) 檔案下載到您的 PC。然後轉到 Azure 入口網站中的自動化帳戶並上傳Python 套件下的檔案。
使用3.10作為運行時版本
將自動化變數新增至自動化帳戶
將以下變數新增至您的自動化帳戶。由於您需要輸入一個值,因此只需鍵入一個點(“.”)。將整數值保留為 0。
TeamsPhoneNumberOverview_AllCsOnlineNumbers(字串)
TeamsPhoneNumberOverview_PrettyNumbers(字串)
TeamsPhoneNumberOverview_TotalNumberCount(整數)
自動化變數
將電信商資訊新增至您的直接路由號碼
如果您有直接路由號碼,則需要更號碼管理清單第新您的來源清單。舊結構只有一列,稱為PhoneNumber。現在有PhoneNumber和Operator。
電話號碼;操作員
4144520xxxx;測試提供者 1
4144512xxxx;測試提供者 2
4144512xxxx;測試提供者 3
將更新的 CSV 放入.\Resources\DirectRoutingNumbers-V2.csv,然後執行此腳本以更新 Azure 中的自動化變數。
或者,您也可以執行以下程式碼並將內容貼到TeamsPhoneNumberOverview_DirectRoutingNumbers自動化變數中。
“‘” + (Import-Csv -Path .\Resources\DirectRoutingNumbers-V2.csv -Delimiter “;” | ConvertTo-Json | Out-String) + “‘” |設定剪貼簿
建立 Python 運行手冊
前往自動化帳戶中的 Runbook,然後按一下「建立 Runbook」。為其命名Format-TeamsPhoneNumbers並選擇Python作為 Runbook 類型,選擇3.10(預覽版)作為運行時版本。
建立一個新的 python Runbook
取得此程式碼並將其貼上到 Azure 入口網站。儲存並發布 Runbook。
設定託管身分和權限
每次執行主 Runbook 時,它都會透過將目前計數與儲存在TeamsPhoneNumberOverview_TotalNumberCount變數中的上一個作業的計數進行比較來檢查總計數是否仍然相同。如果數字計數與先前的作業不同,則主 Runbook 將啟動 python Runbook。 python Runbook 將使用電話號碼庫將所有電話號碼格式化為其本地化格式。
但是,我們必須先允許 Runbook 使用託管識別碼啟動另一個 Runbook 作業。在自動化帳戶中,前往「身分」並將「系統指派」(託管身分)的切換開關切換 至「開」。然後點選「儲存」。
啟用託管身份
按一下「Azure 角色指派」,然後按一下「新增角色指派(預覽)」。將範圍設定為資源組,選擇您的訂閱和資源組,然後選擇Automation Operator作為角色。
新增角色分配
按一下「儲存」。
更新主操作手冊
將TeamsPhoneOverview Runbook中的程式碼替換為此程式碼。確保在儲存並發布 Runbook 之前將該$localTestMode變數變更為。$false也要更新第 95-97 行的自動化帳戶和資源組的名稱。
更新變數
如果您不想將使用者的LineURI寫回Entra ID BusinessPhones,請變更syncTeamsPhoneNumbersToEntraIdBusinessPhones為$false第 6 行。
預設情況下,腳本將更新聯絡資訊中的 Entra ID 用戶公司電話號碼
更新流程
最後,轉到您的流程並進行最後的小更改。在這裡,新增我們建立的新列的值。如果您需要回顧一下,這就是流程刪除未分配的號碼的部分,因為無法刪除使用者設定檔。然後,我們使用除User Profile Claims之外的所有資訊重新建立清單條目。由於使用者設定檔保留,因此我們可以使用使用者設定檔電子郵件並將其寫入「先前的使用者」欄位。重新建立已刪除的條目後,評論欄位中的評論也將再次新增。
為新列新增值
更新流程觸發條件
目前觸發條件檢查使用者的電子郵件地址是否等於使用者主體名稱。儘管我希望情況始終如此,但現實有時會有所不同。一些讀者報告說,他們的 Flow 因此陷入了無限觸發循環。
我稍微調整了觸發條件,因此它不再將電子郵件地址與 UPN 進行比較。相反,使用分割操作從使用者設定檔中提取 UPN,然後與清單列中的 UPN 進行比較。這是更新後的觸發條件。確保在您的流程中更新它,它將比舊的更強大。