CarPlay利用中に画面を見ずにLine送信したい

# 標準でできるようになってます
2020/2/15現在、ショートカットを利用していなくてもLINE送信、通話が可能になっていました。
Siriの返答は一部うろ覚えですが、以下のような流れでLINEが利用できました。
ポイントは、相手の名前をフルネームで言うとNGで、下の名前だけ言うとOKなど、アドレス一覧の検索に癖があることです。

###LINEメッセージ送信
「(自分)ライン送信」→「(Siri)誰に送りますか？」→「(自)相手の名前」→「(S)内容は何ですか？」→「(自)これから帰るよ」→「(S)送信先と内容は〜です。送信して良いですか？」→「(自)はい」→LINEが送信される

###LINE通話
「(自分)ライン通話」→「(Siri)誰と通話しますか？」→「(自)相手の名前」→「(S)この人で良い？」→「(自)はい」→通話のコール音がして相手を呼び出す


# 注意！
2020/1/15現在、自分の環境では、IFTTTにPOSTする処理の箇所でSiriから「車を降りてから実行してください」と言われるようになってしまい、使えなくなりました。原因調査中です。

# これは何？
CarPlay使っていますか？
スマホより不自由で、カーナビよりも「ゆるっと」していますが、なんとか使えています。
地図や音楽は選択肢が増えましたが、メッセージ関係は限定的なのが不満です。

本記事はCarPlay中にLineにメッセージを送信する方法です。
家族に「渋滞で遅れるよ」などと簡単なメッセージを送るために作りました。

IFTTTとiOSのショートカットアプリを連携して実現しています。

### 出来ること
- 音声操作だけで、画面を一切見ずにLine送信ができます。
- 送信先（Lineグループ）は固定です。複数のショートカットとIFTTTレシピを作成すれば、複数の送り先に対応可能となるでしょう。

- 一息で喋れる文章を送信します。息継ぎすると、そこでSiriが勝手に締め切ります。
- Lineの受信に関しては、ノーケアです。安全に停車してLineアプリを使いましょう。

### 不具合または制限
- 送信先は、個人宛でもLineグループが必要です（自分、相手、LINE Notifyの３人）
- CarPlayから利用すると、たまにショートカットのスクリプト実行が途中で終了してしまいます。その場合は、最初からやり直しとなります。原因不明です。
- 音声入力の直前や終了時に、カスタムできない固定の文章を喋るので、Siriの返事がくどいです。例えばこんな感じです。
  - 「送信しますか？」（自分が作った文章）
  - 「テキストはなんですか？」（文章聞き取りの際、勝手に挿入される文章）

### 必要なもの
- CarPlay対応車両
- CarPlay対応iPhone
- IFTTTアカウント
- Lineアカウント
- ショートカットアプリ

# 事前準備
`webhook ifttt line`でググってLineに送信できるURLを作成してください。
こんなのです`https://maker.ifttt.com/trigger/イベント名/with/key/キー文字列`
IFTTTでLineのレシピを作成する時点で、送信先と文章を設定しまので、送り先は固定となります。
IFTTTのMessage設定は`Value1`だけ残して、残りは消しておきます。
この`Value1`は、ただの文字列ではなく、ingredientの方です。

# ショートカット作成
事前準備ができたら、iPhoneのショートカットアプリを起動して、「＋ショートカットを作成」します。

###ショートカットの内容

ショートカットが起動したことを知らせます。
利用している機能「テキストを読み上げる」
![001.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389856/1940ed8e-2a9c-2f08-5480-0b4a7c3bfe9e.png)

まずは送信する文章を音声入力で取得します。念の為、文章を復唱します。
利用している機能「テキストを音声入力」「テキストを読み上げる」「変数を設定」
「テキストを音声入力」については、全て**表示を増やす→聞き取りを停止＝一時停止後**としてください。
一時停止後にすることで、話し終えた時点で次のアクションに自動的に移行できます。
![002.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389856/e1dcd2af-a07f-859b-db39-a653dd973c18.png)

次に復唱した文章でよいかを確認します。
利用している機能「テキストを読み上げる」
![003.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389856/50a3f997-aaa4-c73b-9f66-4c460798f3f9.png)

IF文にします。「はい」「いいえ」で答えることを想定しています。
利用している機能「テキストを音声入力」「if文」
![004.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389856/67cd829d-fd9a-ddf2-4dd7-2c9aa1fdc3dc.png)

####IF文の成立時の内容
IFTTTを経由してLine送信します。
URLには、事前準備で取得したIFTTTのwebhookアドレスを設定します。
利用している機能「URL」「URLの内容を取得」
![005.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389856/d2cd9199-c773-9b36-1aca-a3ab1314d57e.png)

送信が完了したことを喋ります。くどい感じの反応になりますが、全部の処理が完了せずに処理が終わってしまうことがあるので、正常終了の確認用です。
利用している機能「テキストを読み上げる」
![006.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389856/ff275491-f5ff-bd73-1ff4-2ebc614f25bb.png)
IF文の成立時の処理は以上です。

####IF文の不成立時の内容
送信を中断したことをお知らせします。
利用している機能「テキストを読み上げる」
![007.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/389856/3256e643-ef3e-eeb9-6a2f-31885bb2c834.png)

ここまでできたら、画面右上の「次へ」をタップして保存します。

###ショートカット名を決める
ショートカットの名前はSiriから呼び出す際に、自分が喋る言葉になります。
他のアプリとカブると、ショートカットよりもアプリが優先的に呼び出されることがあります。
自分は覚えやすさを優先して「ライン送信」としました。
そうするとLineアプリが出てきてしまうので、LineのSiri連携を切っています。
（それでもたまにLineアプリが起動してしまいます）

# 使い方
ハンドルのSiri起動ボタンを押して、ショートカット名を喋ります。
スマホ単体でSiriを起動しても同じことができますので、デバッグや練習はCarPlayは不要です。
CarPlay中は、何故かショートカットが最後まで実行されないことがあります。
そういう場合は、もう一度Siri起動ボタンを押すところから始めましょう。