Teams Bot如何判斷用戶所在的時區

一說到時間,就會聯想到時區,夏令時等頭痛的問題,不同國家有不同國家的規定。如果你希望你的Teams Bot可以判斷出當前用戶所在的時區,從而可以針對性的進行一些處理時,你要做好心理準備,這個復雜程度遠遠超過你的想象。因為一個用戶這次在一個時區內登入Teams,下一次可能就在另一個時區了。

好消息是Teams已經幫我們做了很多事情,當Teams發送請求到我們的Bot時,payload里已經帶了一些時間信息。我在我之前的一篇文章中也提到過。下面是一個標準的request body

{"name": "composeExtension/fetchTask","type": "invoke","timestamp": "2019-06-17T14:32:04.956Z","localTimestamp": "2019-06-18T00:32:04.956+10:00","id": "f:1361493733941541435","channelId": "msteams","serviceUrl": "https://smba.trafficmanager.net/apac/","from": { },"conversation": {"isGroup": true,"conversationType": "channel","tenantId": "aece5000-341d-493a-841d-f67e417f1447","id": "19:bf1cbc367561473db0c3fe762c11b508@thread.skype"},"recipient": { },"entities": [{"locale": "en-US","country": "US","platform": "Windows","type": "clientInfo"}],"channelData": { },"value": {"commandId": "start","commandContext": "compose","context": {"theme": "default"}},"locale": "en-US"
}

上面這個payload里有兩個關鍵的時間信息:

  • timestamp:當前的UTC時間
  • localTimestamp:當前用戶所在的他/她的本地時間,加號后面的小時數針對UTC時間的offset

所以你的bot就知道了這個用戶當前所在的時區和UTC相差多少。要注意我有兩個重要點:

  • “當前”。 我前面已經提到過,用戶的所在地會變化,Teams告訴bot的是此時此刻的用戶信息
  • “所在的時區和UTC相差多少”。這里說的并不是時區(timezone),為什么這么說?我們舉個例子:假設現在是UTC時間0點0分0秒,用戶A在UTC+11的時區,那TA的時間是11:00am,另一個用戶B在UTC+10時區,但TA所在國家正好在經歷夏令時,所以B的時間也是11:00am。在這兩種情況下,Teams對于用戶A和用戶B發送給Bot的時間信息是一樣的。但是實際上他們在不同時區。

如果你看到這里有點暈了,請回到上面這段再看一遍。如果你看懂了,那你會問:到底有沒有版本得到用戶所在的時區?我的目前的答案是沒有特別好的方法,但是Graph API有一個取巧的方法。

Graph API包含了Outlook api,我們使用下面這個api:

GET https://graph.microsoft.com/beta/users/{id|userPrincipalName}/mailboxSettings

我們看一下它返回什么內容

{"@odata.context": "https://graph.microsoft.com/beta/$metadata#users('48d31887-5fad-4d73-a9f5-3c356e68a038')/mailboxSettings","archiveFolder": "AAMkAGVmMDEzMTM4LTZmYWUtNDdkNC1hMDZiLTU1OGY5OTZhYmY4OAAuAAAAAAAiQ8W967B7TKBjgx9rVEURAQAiIsqMbYjsT5e-T7KzowPTAAAAAAFNAAA=","timeZone": "Pacific Standard Time","dateFormat": "M/d/yyyy","timeFormat": "h:mm tt","automaticRepliesSetting": {"status": "disabled","externalAudience": "all","internalReplyMessage": "","externalReplyMessage": "","scheduledStartDateTime": {"dateTime": "2019-10-05T12:00:00.0000000","timeZone": "UTC"},"scheduledEndDateTime": {"dateTime": "2019-10-06T12:00:00.0000000","timeZone": "UTC"}},"language": {"locale": "en-US","displayName": "English (United States)"},"workingHours": {"daysOfWeek": ["monday","tuesday","wednesday","thursday","friday"],"startTime": "08:00:00.0000000","endTime": "17:00:00.0000000","timeZone": {"name": "Pacific Standard Time"}}
}

是不是很強大?不旦旦有timezone信息,還有日期時間顯示格式的偏好。還有工作日信息,不同國家對工作日的定義是不同的。還有標準工作時間的信息,不同公司對上下班時間的設置也會不同。

當然,使用Graph API并不是沒有代價的,這個需要用戶做額外的授權,不過Teams產品團隊表示,以后會把對Graph API的授權和Teams app合在一起,這樣用戶在安裝teams app的時候就同時完成了授權。期待這天早點到來。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/278003.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/278003.shtml
英文地址,請注明出處:http://en.pswp.cn/news/278003.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

『流暢的Python』第1~4章筆記_數據結構、編碼

由于1~4章內容零散且基礎,所以統計一下涉及到的內容,記錄一下,方便查閱(第一張圖右鍵新頁面打開即可看到清晰大圖)

docker 安裝ELK

參考文檔: Docker ELK使用文檔:http://elk-docker.readthedocs.io/ 1.拉取鏡像 查看 Docker Hub 的鏡像 docker search elk 拉取鏡像 sudo docker pull sebp/elk 2.啟動容器 docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -p 4560:4560 -it --na…

在Teams Hackathon上介紹LuckyDraw

很榮幸有機會在今天的Teams Hackathon上介紹LuckyDraw這個teams app。 因為到場的都是各路開發高手,所以當時在準備這個ppt的時候特別增加了難度等級,哈哈。 從如何構建云原生的Teams app,到IaC,重點講了如何開發一個面向全球用戶…

Word 2010 制作文檔結構之圖標自動編號設置

注意: 使用圖片自動編號時,如果文檔標題使用的樣式是通過“將所選內容保存為新快速樣式”所生成的樣式,則圖片自動編號不會生效 因此設置標題樣式時,不要 新建樣式,直接使用word預設的“標題 1”樣式和“標題 2”樣式即…

ubuntu linux下建立stm32開發環境: 程序燒錄 openocd+openjtag

原文出處: http://blog.csdn.net/embbnux/article/details/17619621 之前建立stm32開發環境,程序也已經編譯好生成main.bin,接下來就是要把該文件燒錄到stm32上.在linux下給arm燒錄程序主要使用openocd,這個軟件開源,而且支持眾多芯片,從ARM9到A8都可以,當然STM32也…

在Teams中對網站的URL特殊解析

Teams中有一個不太被大家注意的擴展點,名字叫Link unfurling,就是對于一些特殊域名的URL進行特別的解釋。 可能這么說,大家還是無法理解,我們看一下下面這個圖,當用戶在message輸入框中輸入了一竄url后,Te…

Wireshark 在Windows下的安裝

1、wireshark官網地址:https://www.wireshark.ort/ 下載抓包驅動:windows使用winpcap,Linux使用libcap2、安裝下載好的wireshark程序包:3、安裝winpcap插件:4、安裝USBPcap插件:5、安裝完成&…

Teams團隊的成員列表API的已知問題

如果大家經常使用Graph API來對Teams進行操作管理的話,有時候會遇到一些奇怪的問題,我前兩天還在Stack Overflow上回答了一個用戶的問題,這個問題我自己也遇到過。所以我想用這篇文章來分享一下,萬一以后大家遇到類似的問題&#…

OSChina 周三亂彈 —— 爸爸說,這個是從他硬盤里掉出來的

2019獨角獸企業重金招聘Python工程師標準>>> Osc亂彈歌單(2018)請戳(這里) 【今日歌曲】 煥煥 :分享鄭秀文的單曲《唉聲嘆氣》 《唉聲嘆氣》 手機黨少年們想聽歌,請使勁兒戳(這里&am…

改進的二分查找

1 import java.util.Comparator;2 3 public class MyUtil {4 5 public static <T extends Comparable<T>> int binarySearch(T[] x, T key) {6 return binarySearch(x, 0, x.length- 1, key);7 }8 9 // 使用循環實現的二分查找 10 public static…

LuckyDraw app被評為Microsoft365 App Award

今天查了一下LuckyDraw app&#xff0c;突然發現我上半年開發的Teams app: LuckyDraw&#xff0c;竟然多了一個勛章圖標&#xff0c;點進去一看是微軟給我的app評了一個”Microsoft 365 App Award”。Super surprise!!&#x1f60d;&#x1f60d;&#x1f60d; 看來我必須要抓…

Python學習筆記__10.4章 進程VS線程

# 這是學習廖雪峰老師python教程的學習筆記1、概覽我們介紹了多進程和多線程&#xff0c;這是實現多任務最常用的兩種方式。現在&#xff0c;我們來討論一下這兩種方式的優缺點要實現多任務&#xff0c;通常我們會設計Master-Worker模式&#xff0c;Master負責分配任務&#xf…

Filebeat占用內存和CPU過高問題排查

經反饋&#xff0c;新部署的服務器上filebeat占用的cpu過高&#xff0c;且內存只增不減。 而據我了解filebeat非常輕量級&#xff0c;正常情況下占用的資源幾乎都能忽略不計&#xff0c;所以懷疑是filebeat本身出了問題。 第一時間查看filebeat日志&#xff08;默認路徑/var/lo…

Teams架構剖析(2019年版本)

在上個月剛剛結束的Ignite大會上&#xff0c;Teams產品的架構師Bill Bliss給大家奉上了最新的Teams的架構設計&#xff0c;之前2017年和2018年微軟的技術大會上都Teams架構的分享&#xff0c;但是今年大神把Teams架構講得很深入&#xff0c;覆蓋面很廣。我這里就挑一些&#xf…

pycharm工具下代碼下面顯示波浪線的去處方法

近期安裝了python后&#xff0c;發現使用pycharm工具打開代碼后發現代碼下邊會有波浪線的顯示&#xff1b;但是該代碼語句確實沒有錯誤&#xff0c;通過查詢發現了兩種方法去掉該波紋的顯示&#xff0c;下面就具體說明一下&#xff1a; 方法一&#xff1a; 打開pycharm在右下方…

js面向對象與PHP面向對象總結

js面向對象&#xff1a; 1.什么是對象&#xff1f; 對象&#xff1a;任何實體都是對象&#xff0c;擁有屬性和方法兩大特征 屬性&#xff1a;描述事物的特點&#xff1b; 方法&#xff1a;實物擁有的行為&#xff1b; 2.在JS里 Person.name"zhang" Person.fnfunction…

面向全球用戶的Teams app之Culture數字篇

我前幾周在微軟Ignite the Tour北京大會上&#xff0c;分享了如何開發一款面向全世界用戶的Teams App&#xff0c;里面介紹了在開發Global Ready的app時會遇到的各種挑戰&#xff0c;反響很好。所以我準備寫幾篇文章&#xff0c;將這些內容分享給沒有時間參加大會的同學。 這篇…

Dubbo原理與框架設計

Dubbo是常用的開源服務治理型RPC框架&#xff0c;在之前osgi框架下不同bundle之間的方法調用時用到過。其工作原理和框架設計值得開源技術愛好者學習和研究。 一、Dubbo的工作原理 調用關系說明 服務容器負責啟動&#xff0c;加載&#xff0c;運行服務提供者。服務提供者在啟動…

面向全球用戶的Teams app之Culture計量單位和禁忌篇

我在前一篇文章里分享了Global Ready的app時會遇到的不同文化對于數字方面的挑戰。這篇我繼續分享不同文化對于計量單位和禁忌方面的挑戰。 我們先來看一個例子&#xff0c;假如有一個teams bot&#xff0c;它告訴你一些動物的速度&#xff0c;比如它告訴你&#xff1a; 獵豹能…

【我的Android進階之旅】Android自定義Lint實踐

背景 2017年8月份的時候&#xff0c;我在公司開始推廣Lint、FindBugs等靜態代碼檢測工具。然后發現系統自帶的Lint檢測的Issue不滿足我們團隊內部的特定需求&#xff0c;因此去自定義了部分Lint規則。這個檢測運行了大半年&#xff0c;運行良好&#xff0c;團隊的代碼規范也有了…