チャネルのスレッドとSharePointリストを連携させる（受付フロー編）

# はじめに
この記事は①概要編 ②受付フロー編 ③更新フロー編 の3本立てのうち、②受付フロー編です。
今回は準備のための設定がほとんどになるので、あまり面白い内容はありません。
あしからず！
<details><summary>受付フローの全体像</summary>

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2572227/9ddd7bdb-dc2c-8a89-ca05-a8513e7bfd7d.png)

</details>

https://qiita.com/ksgiksg/items/748e792f6a082ece33c6

# ①Formsを用意する
まずは起点となるフォームを用意します。
今回はフローの説明に使うだけなので、簡単な内容にしています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2572227/ce94becc-d6cf-358b-4013-a661781d7923.png)

# ②転記先のSharePointリストを用意する
次に、フォームから投稿されたお問合せを転記するためのリストを作成します。

|列|種類|説明|
|:-----------|:-----------|:-----------|
|Title|1 行テキスト|既定のタイトル。今回は使用しないため[必須]をオフにしています。|
|Category|選択肢|Formsの質問1.を記載するための列|
|Text|複数行テキスト|Formsの質問2.を記載するための列|
|Status|選択肢|対応状況を記録する列。後ほどアダプティブカードから更新する列です。|
|Responder|ユーザーまたはグループ|Formsの投稿者を記録する列。|
|Link|複数行テキスト|Teamsに投稿した通知メッセージへのリンクURLを記録する列。|

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2572227/8a09aa81-ae24-b8fe-e4de-0725f85bb489.png)

チャネルのスレッドとリストをなるべく双方向に連携させたいので、リスト側にも通知メッセージへのリンクを保存するようにしています。
ハイパーリンクではなく複数行テキストの列にしているのは、メッセージへのリンクURLは長くなりがちなので、ハイパーリンク列の文字数制限を考慮したためです。
Link列には以下の書式を設定することでハイパーリンクを設定しています。
```JSON:Link列の書式
{
  "$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
  "elmType": "a",
  "txtContent": "[Teamsへのリンク]",
  "attributes": {
    "target": "_blank",
    "href": "= @currentField"
  }
}
```

https://zenn.dev/maekawawawa/articles/780855aecc042b

# ③アダプティブカードを用意する
[Adaptive Cards Designer](https://adaptivecards.io/designer/)でアダプティブカードを作成します。
後からフローを作成する際に、問合せの内容などを入れ込むので、とりあえず形だけ作っていきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2572227/a44529a1-f167-758e-cce9-54c6f9031381.png)
<details><summary>アダプティブカードのサンプルコード</summary>

```JSON:Adaptive Cards
{
    "type": "AdaptiveCard",
    "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
    "version": "1.4",
    "body": [
        {
            "type": "Container",
            "items": [
                {
                    "type": "TextBlock",
                    "text": "${$ID}",
                    "wrap": true
                }
            ]
        },
        {
            "type": "Container",
            "items": [
                {
                    "type": "TextBlock",
                    "text": "お問い合わせ",
                    "wrap": true,
                    "weight": "Bolder",
                    "size": "Large"
                }
            ]
        },
        {
            "type": "Container",
            "items": [
                {
                    "type": "ColumnSet",
                    "columns": [
                        {
                            "type": "Column",
                            "width": "stretch",
                            "items": [
                                {
                                    "type": "TextBlock",
                                    "text": "投稿者",
                                    "wrap": true
                                }
                            ]
                        },
                        {
                            "type": "Column",
                            "width": "stretch",
                            "items": [
                                {
                                    "type": "TextBlock",
                                    "text": "${$DisplayName}",
                                    "wrap": true
                                }
                            ]
                        }
                    ]
                }
            ]
        },
        {
            "type": "Container",
            "items": [
                {
                    "type": "ColumnSet",
                    "columns": [
                        {
                            "type": "Column",
                            "width": "stretch",
                            "items": [
                                {
                                    "type": "TextBlock",
                                    "text": "分類",
                                    "wrap": true
                                }
                            ]
                        },
                        {
                            "type": "Column",
                            "width": "stretch",
                            "items": [
                                {
                                    "type": "TextBlock",
                                    "text": "${$Category}",
                                    "wrap": true
                                }
                            ]
                        }
                    ]
                }
            ]
        },
        {
            "type": "ColumnSet",
            "columns": [
                {
                    "type": "Column",
                    "width": "stretch",
                    "items": [
                        {
                            "type": "TextBlock",
                            "text": "内容",
                            "wrap": true
                        }
                    ]
                },
                {
                    "type": "Column",
                    "width": "stretch",
                    "items": [
                        {
                            "type": "TextBlock",
                            "text": "${$Text}",
                            "wrap": true
                        }
                    ]
                }
            ]
        },
        {
            "type": "Input.ChoiceSet",
            "choices": [
                {
                    "title": "未対応",
                    "value": "未対応"
                },
                {
                    "title": "対応中",
                    "value": "対応中"
                },
                {
                    "title": "完了",
                    "value": "完了"
                }
            ],
            "placeholder": "Status",
            "id": "Choices"
        }
    ],
    "actions": [
        {
            "type": "Action.Submit",
            "title": "状況を更新する",
            "style": "positive",
            "id": "post"
        },
        {
            "type": "Action.OpenUrl",
            "title": "リストを開く",
            "url": "${$LinkURL}"
        }
    ]
}
```
</details>

:::note warn
**今回最も重要なポイントはここです。**
:::
アダプティブカードから紐ついたリストアイテムを特定するために、カードのわかりやすい場所にリストアイテムのIDを記録します。
後続のフローでJSONを解析してこのリストアイテムのIDを取得する必要があるので、今回は**最もわかりやすいようにカードの先頭**に配置しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2572227/444411dc-f02a-d9cc-78b4-880110368c75.png)


# ④受付フローの作成
準備が終わったのでいよいよフローを作成します。
カードにはリストIDの記載・リストへのリンクを作成、リストにはカード(投稿)へのリンクをそれぞれ作成するため、以下の順番でアクションを並べます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2572227/ce259225-3146-3d60-bf19-13d92544ba24.png)


**チャットやチャネルにアダプティブ カードを投稿する**のアクションでは、[詳細オプションを表示する]をクリックすると**Card Type ID**の入力欄が表示されます。
**Card Type ID**に識別のための任意のIDを設定し、後のフローで使用するために控えておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2572227/141caef2-db85-7aba-6dd2-e318bdd9220d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2572227/f47adeab-22ca-04ea-fd1e-6a98281c52bc.png)
Card Type IDについては、以下の記事で詳しく解説されています。

https://mofumofupower.hatenablog.com/entry/teams_adaptive_trigger

最後に、先ほど作成したアダプティブカードのJSONを貼り付け、それぞれ動的な値に変更しておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2572227/5f6a2420-c142-bcd6-1fe7-43dfad126a96.png)

今回は以上です。
***

https://qiita.com/ksgiksg/items/cf2d9bfddb64cc543965