siriにNotionへ音声メモを追加してもらう

# 動機
個人OKRを設定しようとするときに、何にしようかあれこれ考えてみるのですが、机に座っているときは案が出ず、席を立つと思い付いたりする時がありました。
ただ、その場でメモすればよかったのですが、タイミングを逃してしまい、何を思い付いたか忘れてしまうことがありました。
なので、Siriから音声でメモを取ってもらうことにしました。
また、Notionを使っているので、メモはNotionへ追加することにしました。

# 使ったツール、バージョン
- iphone iOS 15.5
- ショートカット（iphoneアプリ）
- Notion 2.17.23.10.25.54 Desktop 2.0.20
- postman 9.24.2

# 作業概要
作業工程は、次の４ステップです。

1. NotionのMy integrationsへintegrationを追加
2. integrationをメモを追加したいNotionデータベースページへ追加
3. postmanでNotionAPIの設定をテストする
4. iphone上で音声メモを追加するショートカットを作成

# 作業詳細
### NotionのMy integrationsへintegrationを追加

1. Notionへメモを追加するために、NotionAPIを使用します。
    NotionAPIを使うためには、NotionのWorkspaceにintegrationを追加する必要がありますが、これにはWorkspaceでAdmin権限を持っている必要があります。
    権限の有無は、Notionアプリ->Settings&Members->Membersで確認できます。
2. 権限があることを確認したら、[このページより](https://www.notion.so/my-integrations)よりintegrationを追加します。
    名前を設定し、あとはデフォルトで大丈夫です。
![スクリーンショット 2022-07-24 12.06.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280261/48138325-fa9d-a11b-3183-e3497f723210.png)
3. これでintegrationを追加は完了しました。
次の作業のために、Internal Integration Tokenを取得します。
![スクリーンショット 2022-07-24 12.07.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280261/868f6e58-c73c-e498-36cc-af6f46928fb0.png)


### integrationをメモを追加したいNotionデータベースページへ追加
1. 音声メモを追加するためのNotion databaseを作成します。
1. databaseがあるページの右上の「Share」ボタンを押します。
![スクリーンショット 2022-07-24 13.03.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280261/1eec2a7d-37a0-7280-9940-2efd9aac97f3.png)
1. Shareボタンを押した後に出るフォームをクリックすると、先ほど追加したintegrationが出てきますので、それをクリックした後、inviteボタンをクリックします。これで追加完了です。
![スクリーンショット 2022-07-24 12.11.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280261/127089de-ab91-0bd8-3bca-f31496267e7b.png)

### postmanでNotionAPIの設定をテストする
[postman](https://www.postman.com/)は、WebAPI開発用のツールです。今回は、NotionAPIへリクエストを飛ばして、正しい結果が得られることを確認するために使います。

1. postmanで次のように設定します。
**Header**
![スクリーンショット 2022-07-24 12.14.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280261/dc4ce80d-fe32-1ea9-02b3-c37df292cbf4.png)
    - Authorization ここの値は、作業１で取得したintegration_tokenです。
    - Notion-Version 2022-06-28

    **Body**
    ![スクリーンショット 2022-07-24 8.36.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280261/815977fd-261e-b777-e65c-1dab53a4a1c8.png)
    
    - parent: { database_id: database_idの値 }
      database_idの値は、データベース右上の3点リーダー→ Copy link to viewをクリックします。  
      すると、`https://www.notion.so/{database_id}?v={view_id}`という形式のリンクが取得できるので、database_idの部分を入力して下さい。
      <img width="200" alt="スクリーンショット 2022-07-24 12.22.37.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280261/df79f759-9306-ab87-4af7-31f1f0c3f531.png">
    - propertiesの中のタイトルという項目は、databaseのフィールド名になります。ご自分の環境に合わせて、変更して下さい。ここでは「タイトル」というフィールド名にしています。

2. Sendボタンを押して、databaseへテストが追加されていたら、成功です。
![スクリーンショット 2022-07-24 12.31.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280261/4f0a0c25-5245-70e3-bcd0-075f427cfd24.png)


### iphone上で音声メモを追加するショートカットを作成
1. iphoneの「ショートカット」アプリを起動します。
2. アプリ右上の「＋」ボタンをクリックし、新しいショートカットを追加します。
    <img width="200" alt="Image from iOS (22).png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280261/459379ed-6f0b-cbaa-f178-aa65e1b981c5.png">
3. ショートカットの名前はなんでもいいですが、今回は「アイデア」にします。
   この名前は後でsiriから呼び出す時の名前になります。
    <img width="200" alt="Image from iOS (18).png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280261/2e6a6f04-cf15-c606-9519-45feacf073e1.png">
4. アクションを追加していきます。
  3の画像の下にあるフォームからテキストと検索してください。
    <img width="200" alt="Image from iOS (17).png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280261/fbacd80a-727c-b00a-cb8a-3878561a3756.png">
5. テキストという項目が出てくるので、タップします。
    テキストにdatabase_idの値を入力します。
    また、次のアクションの提案にある「変数を設定」項目を追加し、テキストの値をdatabase_idへ設定します。
    <img width="200" alt="Image from iOS (13).png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280261/d81713cd-003b-6cd0-25ca-a6e356098303.png">
6. 同様の操作でテキストを呼び出し、integration_idも変数へ設定します。
    <img width="200" alt="Image from iOS (14).png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280261/ed9e5cb5-0541-81aa-b0cd-f557c2bd6a23.png">
7. アクション「テキストを音声入力」を追加します。
    <img width="200" alt="Image from iOS (22).png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280261/f752b8ec-c6c3-2abc-1c85-9e3da01308a1.png">
8. アクション「URLの内容を取得」を追加します。
URLへは、Notion APIを呼び出すために、`https://api.notion.com/v1/pages`を入力してください。
    <img width="200" alt="Image from iOS (24).png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280261/25ea7e58-4dde-62bd-06d9-9cf54319ef66.png">
8. 「方法」、「ヘッダ」、「本文を要求」へ設定を行います。
ここの設定は複雑ですが、postmanでapiのコードを作成しているので、それをショートカットアプリ用にすればOKです。
    <img width="200" alt="Image from iOS (25).png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280261/8fe4e00b-29b1-45bf-f788-191793f88767.png">
parentの設定方法
    <img width="200" alt="Image from iOS (7).png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280261/64ef2c42-f1b1-fc90-4e4d-e22524ba5cd9.png">
propertiesの設定方法
    <img width="200" alt="Image from iOS (6).png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280261/569b3bf5-35d4-c021-e064-d3cb805866eb.png">
    <img width="200" alt="Image from iOS (5).png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280261/7bf8da28-037d-17da-6ec5-0712be729fa3.png">
    <img width="200" alt="Image from iOS (4).png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280261/3d986b6d-bc62-14bf-4c12-301d4e92781b.png">
    <img width="200" alt="Image from iOS (3).png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280261/2cda2241-bfaf-4a5a-f2b8-81b5f278da6e.png">
    <img width="200" alt="Image from iOS (2).png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280261/0b9c7561-8838-60d8-e73e-b639b6573f60.png">
    一応文字でも書いておきます。（）の中で示したフィールドタイプを選択しています。

    **方法**
    - POST
    
    **ヘッダ**
    - Authorization: \<integration_token\>（テキスト）
    - Notion-Version: 2022-06-28（テキスト）
    
    **本文を要求**
    - JSON
    - parent（辞書）
        - database_id: \<database_id\>（テキスト）
    - properties（辞書）
        - タイトル（辞書）
            - title（配列）
                - 項目１（辞書）
                    - text（辞書）
                        - content: \<音声入力されたテキスト\>（テキスト）
10. これで設定は完了です。


### 動作確認：Siriを呼び出す
Hei, Siri アイデアと言ってみて下さい。
テキストを求められるので、何か話すと、話した内容のタイトルを持った項目が追加されます。
画像ではテストと言ってます。
![スクリーンショット 2022-07-24 12.31.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280261/fc1e687c-4efa-7077-71a8-9e45ebdef59b.png)


## おまけ

### siriを呼び出す時にあったこと
1. ショートカットに追加し、Hei, Siri アイデアと行ってみたのですが、アイデアについて、検索をしてしまって、アイデアのショートカットが起動しませんでした。
    この時は、Hei, Siri ショートカットと言った後に、どのショートカットか聞かれるので、アイデアと答えると、起動できました。
2. また、何度かショートカットの起動を行っていたら、Hei, Siri アイデアだけでも起動してくれるようになりました。
3. iphoneに顔を向けて、話しかけないと、反応してくれなかったです。

### Siriの音声認識具合
1. ショートカットの名前を「アイデア」にして、Siriを呼び出す時は、「Hei, Siri アイデア」と発音しましょう。決して、「アイディア」と発音してはいけません。（僕はこれで聞き取ってもらえませんでした。）
2. 吃ると途中で入力の受付をやめてしまう。
3. ある程度長い文章でもつかえなければ、認識してくれる。逆を言えば、一気に読み上げないといけない。
4. ランニングの最中に、コメントしてみましたが、きちんとメモしてくれてました。

### Siri音声入力サンプル
読み上げた文章 → 読み取った文章
- 吾輩は猫である名前はまだない → 吾輩は猫である名前はまだない
- 週間天気明日は広く晴れも火曜日以降は関東など強雨に注意
    → 週間天気明日は広く晴れも火曜日以降は関東など今日雨に注意
- Vログ → ブログ