アマゾンのTMG便 (ファイズ) に自動再配達電話をかける

(2017年2月8日 追記 — ウェブ版もできました)

このところアマゾンからの荷物がTMG便/デリバリープロバイダ/PHYZ (ファイズ) という、正式名称もはっきりしない配送業者から来ることが増えてきた。この業者、ウェブサイトにアマゾン客専用の照会・再配達ページがあるにも関わらず、実際に追跡番号を入力してみると「お問い合わせ情報が存在しません」と表示されるだけで、登録されていたためしがない。2016年にもなって、わざわざ電話をかけないと再配達の依頼もできない。

私は自動受付電話が肉声電話の次に嫌いなので、少しでも心労を和らげようと Mac の iPhone通話機能を利用して半自動的に再配達電話をかける AppleScript を書いてしばらく使っている。

入力画面
AppleScript 版のダイアログ

表示されるダイアログに追跡番号をコピペして、希望日時を選択すると、iPhone経由で自動的に発信して数字を全部入力してくれる。最後に音声案内が依頼内容をまとめて復唱して「よろしければ1を…」みたいに言ってくるので、それを一応確認して自分でキーパッドの “1” を押して終わりという感じ。気づかない間に電話システムが変わってたりしたら困るから最後の確認だけ手動にしてるけど、無鉄砲な人はここの段まで自動化しちゃっていいと思う。


ウェブ版も作ってみた

【2017年2月8日 追記】Googleのページランクが想定外に高くなってしまい、なんか申し訳ないのでAppleScriptを使わずにウェブから電話をかけられるのも作りました。電話発信リンクに対応したスマートフォンやパソコンから使えます。

TMG再配達電話ジェネレーター

希望日

(受付時間: 9〜18時は当日9時まで、18〜21時は当日18時まで)

再配達依頼の自動電話をかける →

(最後に依頼内容を復唱されるのでそれを確認して “1” を押してください)


AppleScript版

-- 指定した内容でTMG便に再配達依頼の電話をかける。最後に依頼内容を復唱されるのでそのときに"1"を押して終わり。
-- 2017年2月8日 更新
property dialog_title : "TMG便 - 再配達依頼"
property phone_no : "050-5525-7445"
property my_days : {"当日", "翌日"}
property my_timeslots : {"9〜12時", "12〜14時", "14〜16時", "16〜18時", "18〜20時", "20〜21時", "指定時間なし"}

tell application "System Events"
	activate
	
	-- 追跡番号
	set track_no to text returned of (display dialog "追跡番号" default answer "" with title dialog_title)
	
	if (count of track_no) is not 12 then
		display alert dialog_title message "追跡番号が12桁ではありません"
		error number -128 -- exit
	end if
	
	-- 希望日
	set my_day_response to (choose from list my_days with title dialog_title with prompt "希望日:" default items (item 1 of my_days))
	if my_day_response is false then error number -128 -- exit
	set my_day_code to my getIndexInArray((item 1 of my_day_response), my_days)
	
	-- 希望時間
	set my_timeslot_response to (choose from list my_timeslots with title dialog_title with prompt "※ 受付時間" & return & "9〜18時は当日9時まで" & return & "18〜21時は当日18時まで" & return & return & "希望時間:" default items (item 1 of my_timeslots))
	if my_timeslot_response is false then error number -128 -- exit
	set my_timeslot_code to my getIndexInArray((item 1 of my_timeslot_response), my_timeslots)
	
	-- 確認
	display dialog "【追跡番号】" & track_no & return & "【希望日時】" & (item 1 of my_day_response) & " " & (item 1 of my_timeslot_response) & return & return & "この内容で発信しますか?" with title dialog_title
	
	-- 現在時刻を元に調整
	set current_time to time of (current date)
	if current_time > (18 * 3600) then -- past 18:00
		set day_string to ""
	else
		set day_string to my_day_code & ",,,1,,,"
	end if
	
	-- 発信
	open location "tel:" & phone_no & ",,,,,," & track_no & "#,,,,,,,1" & ",,," & day_string & my_timeslot_code & ",,,,1"
	
end tell

on getIndexInArray(my_item, my_array)
	repeat with i from 1 to the count of my_array
		if item i of my_array is my_item then return i
	end repeat
	return 0
end getIndexInArray

TMGサイトの一時的なトラブルかと思って我慢していたけど、何ヶ月経っても直らないので早く直してほしい。