#成果物
[RoutineHub • Call with Prefix][link-1]
こちらを参考にして作りました。
[link-1]:https://routinehub.co/shortcut/538
#手短に
連絡先やクリップボード中の番号に、または共有メニューで共有した番号にプレフィックスを付けて電話をかけられます。
#背景
みおふぉんダイアルやら楽天でんわやら、通話料を節約できるサービスがありますが、利用するにはサービスごとに決められたプレフィックス番号を電話番号の頭につけて発信する必要があります。公式アプリから発信すればそれを自動でやってくれます。
しかし iOS では OS の仕様で公式アプリから着信履歴を見られません。履歴の番号にプレフィックスをつけて折り返し電話しようとすると、番号を履歴からアプリにコピペせねばなりません。またメールや Web ページ上の番号に発信したいときも、同様にアプリにコピペしないといけません。
これは面倒なので、iOS 12 から備わったショートカット App でこれを簡単にしてみました。
LINE Out も電話番号をコピペできなくて不便なので、応用としてこちらに番号を渡すショートカットも作りました。
#導入手順
-
ショートカット App を App Store からインストール。
-
Call with Prefix ショートカットを[ダウンロード][link-1]。
-
利用したいプレフィックス番号を登録。デフォルトで Biglobe でんわのプレフィックスが入っています。
-
電話したい国の国際電話コードを登録。日本国内に電話したい方はデフォルトの 0 のままでいいです。
プレフィックスと国際電話コードは後で変更することもできます。
ショートカット App 上の Call with Prefix アイコン右上の 3 点ボタンをタップして
さらにショートカット編集画面でもタイトル右の 3 点ボタンをタップ
#使用方法
##共有メニュー (Action Extention) 経由
連絡先や着信履歴の番号、Web ページ上の電話番号などを共有し、メニューからショートカット App を選びます。さらに Call with Prefix を選べばその番号にプレフィックス付きで発信できます。
##直接起動
ショートカット App やそのウィジェットから Call with Prefix を起動すると、連絡先やクリップボードから電話番号を取得したり、直接入力したりできます。上と同様、その番号にプレフィックス付きで発信できます。
#アップデートを受け取るには
[UpdateHub][link-2] に対応しています。このショートカットも一緒にダウンロードしておいていただくと、Call with Prefix のアップデートを受け取ることができます。
[link-2]:https://routinehub.co/shortcut/2066
UpdateHub を手動で起動するか Call with Prefix を直接起動して "Check for updates" を選んでいただければ、アップデートがないか確認が走ります。
なお Call with Prefix は、ショートカットを共有するストアのような RoutineHub なるサイトにアップロードしています。ライフハッカーで紹介されていたものです。アップデート通知にはこのサイトの機能が利用されています。
#解説
見ていただければおわかりいただけるかと思いますがこれがないと Qiita っぽくならないので簡単に。
電話番号を取得してくる前半パートと電話をかける後半パートに分かれています。
(一部スクリーンショットは旧バージョンのものになっていますが、動きをご覧いただくのに支障はありません。)
##前半 - 電話番号を取得する
コメントと辞書でメタデータを記載しています。
コメントは上の UpdateHub でのアップデートフェッチに必要な情報も含んでいます。
ショートカットの入力に何か見つかった場合 Action Extension 経由の起動と判断し、その電話番号を取得して後半に渡しています。
そうでない場合はショートカット App またはウィジェットからの起動と判断して
まずクリップボードに電話番号があるかを調べます。あった場合は
クリップボードも含めてどこから電話番号を取得するか、またはアップデートの有無を確認するか尋ねます。プロンプトの文章は予め用意していたものをマジック変数で呼び出しています。
ユーザーの回答は変数に格納しています。
クリップボードに電話番号がなかった場合、それ以外の 3 択を提示するようにしています。
クリップボードから取得するかします。
取得した電話番号を後半に渡します。
アップデート確認が選ばれた場合、まず必要な UpdateHub ショートカットをユーザーが持っているか確認しています。持っている場合
[UpdateHub][link-2] の "Manual Search" 機能を呼び出してアップデート確認を行います。
持っていなかった場合、UpdateHub のダウンロードを促します。
##後半 - 電話をかける
前半から受け渡された電話番号が複数あった場合、どの番号に電話するか尋ねます。
1 つの場合はそれをそのまま次に渡します。
プレフィックスと国際電話コードを用意します。
これらはショートカット導入時の質問項目に挙げていて、ユーザーが変更できるようにしています。
選ばれてきた電話番号の先頭が 0(国内プレフィックス)であるならそれを除去します。
(選ばれる電話番号の国内プレフィックスが 0 であると仮定しています。そのためそれ以外の一部の国の電話番号に対してはうまく動作しませんがそこは割り切っています。)
国際電話コードを付与します。
できた電話番号に発信するかユーザーに確認した後
#終わりに
気軽にプログラミングの雰囲気が味わえてショートカット楽しいです。
ただアクションのコピペ機能がないのとアクション群のモジュール化機能がないので、少しでも複雑なことをしようとすると手間取ります。
モジュールを別ショートカットに切り出して呼び出すことはできますが、フォルダ機能もないのでその分ショートカットが増えて見栄えが悪くなりますし…。
この辺改善されるともっと使いやすくなると思うんですが、そこまでするならアプリにしてよってことでしょうか。