嗨各位好久不見xDD
今天想來做個簡單的分享(順便看能不能開始回復正常學習寫文章的習慣...咳嗯...),
由於這兩天收到朋友 Gary
來問我說,
在跑自動化測試過程中因為註冊和登入等等的需要收簡訊的驗證碼,
可是我總不能每次跑自動化的測試時,
總是手動待命在手機旁然後輸入完再讓測試繼續跑下去吧?
聽起來根本就是半自動化測試對吧?
先釐清需求
Twillio 帳號註冊申請的部分我就不一一贅述,
如果你剛好又很巧沒有帳號,
又剛好看到我的文章想玩玩看可以順便幫我賺一點測試的費用。
我的推薦連結
他有免費額度可以讓你玩所以在意要花錢的同學就可以放心。(但我忘記是多少美金了xDD)
註冊好之後我們就開始手把手教學囉~
選擇國家、條件、號碼
注意: 有些國家不支援 SMS 的部分所以請選擇你需要的功能可以勾選的國家
如圖所示以收簡訊為例我是選加拿大~
接著你應該就可以看到在 Active Numbers 頁面看到你購買的號碼
透過官方給的範例直接無痛使用~
我這邊用我比較熟悉的 node.js
作為範例,
(如果有其他的語言可以自行選用~)
const accountSid = process.env.TWILIO_ACCOUNT_SID;
const authToken = process.env.TWILIO_AUTH_TOKEN;
const client = require('twilio')(accountSid, authToken);
client.messages.list({limit: 20})
.then(messages => messages.forEach(m => console.log(m.body)));
會發現上面需要兩個東西 TWILIO_ACCOUNT_SID
和 TWILIO_AUTH_TOKEN
,
打開個人 console 頁面
給他複製起來~
看要用 command 去 export
的方式或是直接貼進去就看你需求,
接著就是看你如何處理拿回來的資料,
以下是官方給的 json response 範例
就可以從 messages
裡頭的 date_sent
去做 filter。
{
"end": 1,
"first_page_uri": "/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Messages.json?To=%2B123456789&From=%2B987654321&DateSent%3E=2008-01-02&PageSize=2&Page=0",
"next_page_uri": "/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Messages.json?To=%2B123456789&From=%2B987654321&DateSent%3E=2008-01-02&PageSize=2&Page=1&PageToken=PAMMc26223853f8c46b4ab7dfaa6abba0a26",
"page": 0,
"page_size": 2,
"previous_page_uri": "/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Messages.json?To=%2B123456789&From=%2B987654321&DateSent%3E=2008-01-02&PageSize=2&Page=0",
"messages": [
{
"account_sid": "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"api_version": "2010-04-01",
"body": "testing",
"date_created": "Fri, 24 May 2019 17:44:46 +0000",
"date_sent": "Fri, 24 May 2019 17:44:50 +0000",
"date_updated": "Fri, 24 May 2019 17:44:50 +0000",
"direction": "outbound-api",
"error_code": null,
"error_message": null,
"from": "+12019235161",
"messaging_service_sid": null,
"num_media": "0",
"num_segments": "1",
"price": "-0.00750",
"price_unit": "USD",
"sid": "SMded05904ccb347238880ca9264e8fe1c",
"status": "sent",
"subresource_uris": {
"media": "/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Messages/SMded05904ccb347238880ca9264e8fe1c/Media.json",
"feedback": "/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Messages/SMded05904ccb347238880ca9264e8fe1c/Feedback.json"
},
"to": "+18182008801",
"uri": "/2010-04-01/Accounts/ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Messages/SMded05904ccb347238880ca9264e8fe1c.json"
},
...
}
接著就是改起來~
const accountSid = "<your accountSid>";
const authToken = "<your authToken>";
const client = require('twilio')(accountSid, authToken);
const myDate = new Date('2021-08-27'); // 指定日期
client.messages.list({limit: 20})
.then(messages => messages.filter(m => m.dateSent < myDate)) // 過濾 2021-08-27 以後的訊息
.then(messages=> messages.forEach(m => console.log(m.dateSent, m.body))); // 印出簡訊內容
實際成果~
很簡單吧xD !?
以上是今天的分享希望對你有需求的你有幫助。
https://www.twilio.com/docs/sms/tutorials/how-to-retrieve-and-modify-message-history
你的朋友 Gary
竟然不問 Ron
好壞
心結吧
之前有問 結果兩人一起不會XD
是嗎?
你確定?
我不信