ค้นหาเว็บไซต์

การเติมข้อมูลผู้ติดต่อ Outlook ล่วงหน้าด้วย Graph API


ขณะนี้หลายองค์กรอนุญาตให้ผู้ใช้ทำงานได้จากทุกที่และทุกอุปกรณ์ ความท้าทายชุดใหม่ได้เกิดขึ้นแล้ว ตัวอย่างเช่น ผู้ใช้ใหม่ที่ทำงานจากนอกสำนักงานจะได้รับประโยชน์จากการรู้วิธีติดต่อฝ่ายบริการไอที ฝ่ายทรัพยากรบุคคล และบริการภายในอื่นๆ

ข้อมูลนี้มักจะหาได้ง่ายใน Global Address List (GAL) การค้นหาข้อมูลนี้บนอุปกรณ์เคลื่อนที่กลายเป็นเรื่องที่ท้าทายมากขึ้น เนื่องจากไคลเอ็นต์อีเมลมักไม่สามารถเข้าถึง GAL ตัวอย่างเช่น Outlook Mobile จะซิงโครไนซ์เฉพาะผู้ติดต่อส่วนบุคคลกับอุปกรณ์เท่านั้น

เพื่อแก้ไขปัญหา ฉันได้สร้างสคริปต์ PowerShell เพื่ออ่านชุดผู้ติดต่อมาตรฐานจากไฟล์ CSV และเขียนเป็นผู้ติดต่อส่วนตัวไปยังกล่องจดหมายของผู้ใช้ อุปกรณ์เคลื่อนที่สามารถซิงโครไนซ์รายชื่อติดต่อเหล่านี้กับรายชื่ออื่นๆ ที่สร้างโดยผู้ใช้ได้

การสร้างแอปที่ลงทะเบียน

สคริปต์ใช้ Graph API เพื่อจัดเตรียมผู้ติดต่อ ดังนั้นเราจึงต้องมีแอปที่ลงทะเบียนใน Azure AD เพื่อเก็บสิทธิ์และการรับรองความถูกต้อง (นี่คืออีกตัวอย่างหนึ่งของการใช้กราฟกับ PowerShell) สร้างการลงทะเบียนแอปใหม่ในพอร์ทัล Azure AD และเพิ่มสิทธิ์แอปพลิเคชัน Contacts.ReadWrite ตรวจสอบให้แน่ใจว่าได้ให้ความยินยอมแก่ผู้ดูแลระบบสำหรับการอนุญาตเพื่ออนุญาตให้สคริปต์เข้าถึงผู้ติดต่อสำหรับผู้ใช้ทั้งหมด:

เมื่อย้อนกลับไปที่คุณสมบัติของแอป ให้สังเกต รหัสแอปพลิเคชัน (ไคลเอนต์) และ รหัสไดเรกทอรี (ผู้เช่า) จากหน้าภาพรวม:

สุดท้าย เปิดหน้า ใบรับรองและความลับ และสร้างรหัสลับไคลเอ็นต์ใหม่ สังเกตคุณค่าของความลับ การรวมกันของตัวระบุแอป ตัวระบุผู้เช่า และความลับของแอปจะทำให้สคริปต์ของเราสามารถตรวจสอบสิทธิ์และใช้สิทธิ์ที่ได้รับมอบหมายเพื่อโต้ตอบกับกล่องจดหมายของผู้ใช้

หมายเหตุ: เนื่องจากข้อมูลลับถูกใช้ในการตรวจสอบสิทธิ์การลงทะเบียนแอป ดังนั้นให้ถือว่าความลับนี้เหมือนกับรหัสผ่าน และควรระมัดระวังเมื่อจัดเก็บเป็นข้อความธรรมดา

เตรียมไฟล์นำเข้าผู้ติดต่อ

สคริปต์อ่านรายชื่อผู้ติดต่อจากไฟล์ CSV ไฟล์ตัวอย่างมีอยู่ใน GitHub และมีคอลัมน์ต่อไปนี้:

  • ชื่อผู้ช่วย
  • ธุรกิจหน้าแรก
  • โทรศัพท์ธุรกิจ
  • ชื่อบริษัท
  • แผนก
  • ที่อยู่อีเมล
  • ชื่อที่กำหนด
  • ตำแหน่งงาน
  • ชื่อกลาง
  • ชื่อเล่น
  • วิชาชีพ
  • บันทึกส่วนตัว
  • นามสกุล
  • ชื่อ

ค่าแต่ละค่าเหล่านี้จะจับคู่กับค่าที่คุณเห็นในหน้าติดต่อของ Outlook โดยตรง ค่าทั้งหมดเป็นทางเลือก ดังนั้นหากไม่จำเป็น ให้ปล่อยว่างไว้ รายการตัวอย่างถูกเติมไว้ในไฟล์แล้ว และสามารถแทนที่ด้วยรายการแรกของคุณได้ คุณสามารถเพิ่มรายการลงใน CSV ได้มากเท่าที่คุณต้องการ สคริปต์จะเพิ่มแต่ละรายการใน CSV เป็นผู้ติดต่อส่วนตัวในกล่องจดหมายเป้าหมาย:

กำลังเรียกใช้สคริปต์

เมื่อเตรียมไฟล์นำเข้าแล้ว ให้ดาวน์โหลดสคริปต์จาก GitHub และบันทึกไว้ในเครื่อง สคริปต์ต้องการพารามิเตอร์ต่อไปนี้:

  • กล่องจดหมาย - นี่คือ UPN ของกล่องจดหมายเป้าหมาย
  • CSVPath - นี่คือเส้นทางแบบเต็มไปยัง CSV นำเข้า
  • ClientID - นี่คือรหัสแอปพลิเคชันสำหรับแอปที่ลงทะเบียน
  • ClientSecret - นี่คือค่าความลับที่สร้างขึ้นก่อนหน้านี้
  • TenantID - นี่คือรหัสไดเรกทอรีของผู้เช่า

เมื่อมีพารามิเตอร์แต่ละตัวอยู่ในมือ สคริปต์สามารถรันสำหรับผู้ใช้รายเดียวโดยการระบุ UPN ของกล่องจดหมายเป้าหมาย:

##Declare Parameters##
$mailbox = adminseanmc@adminseanmc.com
$clientSecret = <Client Secret Value>
$clientID = <Application (Client) ID Value>
$tenantID = <Directory (Tenant) ID Value>
$CSVPath = <Full path to the import CSV>
##Run Script##
.\graph-PopulateContactsFromCSV.ps1 -Mailbox $mailbox -ClientSecret $clientSecret -ClientID $clientID -TenantID $tenantID -CSVPath $csvPath

สคริปต์จะแสดงรายละเอียดของผู้ติดต่อแต่ละรายในรูปแบบ JSON เมื่อมีการจัดเตรียม:

ตรรกะเพิ่มเติมบางอย่างอนุญาตให้สคริปต์เพิ่มชุดผู้ติดต่อลงในกล่องจดหมายทั้งหมด เมื่อต้องการทำเช่นนี้ ให้เชื่อมต่อกับ Exchange Online Management Shell และเรียกใช้ดังนี้ นี่จะได้รับรายการกล่องจดหมายของผู้ใช้ทั้งหมดในสภาพแวดล้อม จากนั้นเรียกใช้สคริปต์นำเข้าสำหรับแต่ละรายการ:

##Declare Parameters##
$clientSecret = <Client Secret Value>
$clientID = <Application (Client) ID Value>
$tenantID = <Directory (Tenant) ID Value>
$CSVPath = <Full path to the import CSV>
##Run Script##
$mailboxes = Get-EXOMailbox -resultsize unlimited -RecipientTypeDetails usermailbox
Foreach($mailbox in $mailboxes){
.\graph-PopulateContactsFromCSV.ps1 -Mailbox  $mailbox.UserPrincipalName -ClientSecret $clientSecret -ClientID $clientID -TenantID $tenantID -CSVPath $csvPath
}

เมื่อสคริปต์เสร็จสิ้น ผู้ติดต่อจะอยู่ในผู้ติดต่อส่วนตัวของผู้ใช้และพร้อมที่จะซิงค์กับอุปกรณ์ของพวกเขา:

สรุป

ด้วยงานเตรียมการเพียงเล็กน้อย สคริปต์นี้ทำให้การเติมข้อมูลผู้ติดต่อสำหรับผู้ใช้จำนวนเท่าใดก็ได้เป็นเรื่องง่าย รายชื่อใหม่สามารถซิงโครไนซ์กับอุปกรณ์มือถือและเข้าถึงได้จากทุกที่

ทั้งสคริปต์และตัวอย่างไฟล์นำเข้ามีอยู่ใน GitHub

หมายเหตุ: เช่นเคย อย่าลืมตรวจสอบและทดสอบโค้ดใดๆ ก่อนใช้งานในสภาพแวดล้อมการใช้งานจริง

บทความที่เกี่ยวข้อง