客戶發現簡訊寄出後發送紀錄的狀態都沒有改變,檢查後原來是 msgid 對不上,因此找不到應該更新的紀錄 ID。當第一次呼叫三竹 API 會回傳字串 msgid=12345
,我以為 這個 msgid 一定是數字,所以用 preg_replace
去抓數字的部分來紀錄,但該客戶的 msgid 長這樣:msgid=#ABC123
,有英文、數字、跟井字號,因此還是要確實抓到等號後面的值才行。
三竹 API 的回傳結果是用換行區分的字串,需要先做 explode
再來取得 msgid 等號後面的文字:
<?php
// API 回傳結果
$response = '[1]
msgid=#ABC123
statuscode=1
AccountPoint=999';
$result = explode( PHP_EOL, wp_remote_retrieve_body( $response ) );
$msgid = substr( $result[1], strpos( $result[1], '=' ) + 1 ); // #ABC123
這種只傳字串回來的方式對開發者來說不太友善,還是要傳物件或陣列比較好處理些。