4
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

GoogleChatでBotからCard形式のメッセージを送ってみるよ

Last updated at Posted at 2020-08-09

こんにちは!:relaxed:だよ。
お盆休みになったので、いっぱい実装できるよーー。
楽しみだね。

###前回までの振り返り

【問合せBotを作成するまでの道】
1.BOTにDMを送ったら、チャットルームへの転送がされる。 →完了
2.チャットルーム内でのユーザーごとのthread名を保持し、同じユーザーからのDMは同じスレッドに書き込まれる。
3.スレッドに:relaxed:から書き込みをしたら、対象のユーザーにDMが送られる。
4.(余力があれば)よくある質問集みたいな一覧を作ってBotが自動返答してくれる。

内容的には3まで終わったんだけど、ここまできて思った。

この形で連絡くるの、ダサくない?
chat.png

ということで、今回はCard形式のメッセージを作って、上等なおしゃべりができるBotにするよ。

###Card形式について学ぼう
今まで、MessageはText型という、本当に文章がそのまま送られる形だったよ。
Card形式では、画像を埋め込んだり、メッセージ内にButtonを入れることで、指定のURLに飛ばしたり、とよりリッチなMessageを送ることができるよ。
実際使いながら、できることを確認していこう。

公式: Card Formatting Messagesのサンプルページ
[公式: Cardの項目について]
(https://developers.google.com/hangouts/chat/reference/rest/v1/cards)


できること1.HeaderとSectionに区切ったメッセージを送る

Card1つに対し、1つのHeaderをつけられるよ。また必ずSectionを含む必要があるよ。

サンプルだよ。

  var message = {
    "cards": {
      "header" : {
        "title"   : "systemBotだよ",
        "subtitle": "相談・質問に答えるよ",
        "imageUrl": "https://~XXXXX",//アイコン画像のURL
        "imageStyle": "IMAGE" // IMAGEだと正方形、AVATERだと丸型でアイコンが表示されるらしい。こいつは丸顔で背景も白だからわからないという・・
      
      }, 
     "sections": [
        {
          "widgets": [
            {
              "textParagraph": {
                "text": "<b>注意</b><br>僕にはできることとできないことがあるよ。<br><font color=\"#ff0000\">いいかい、できないこともあるんだよ。</font><br>わかってくれたならいいんだ!"
              }
            }
          ]
        }
      ]
    }
  };
スクリーンショット 2020-08-09 13.59.05.png

ちょっとメッセージがおしゃれになったね。


できること2.テキストの他に、ちょっと複雑なコンテンツをメッセージにつけて送る

できること1の例では、TextParagraphというテキスト表示だったけれど、
KeyValuesを使うともっと複雑にリンクを入れたり、コンテンツの段組をしたりすることができるよ。

  var message = {
    "cards": {
      "header" : {
        "title"   : "systemBotだよ",
        "subtitle": "相談・質問に答えるよ",
        "imageUrl": "https://~XXXXX", // アイコン画像のURL
        "imageStyle": "IMAGE"
      
      }, 
     "sections": [
        {
          "widgets": [
            {
              "keyValue": {
                "topLabel": "お問合せNo",
                "content": "000001",
                "contentMultiline": "false",
                "bottomLabel": "ステータス: 受付",
                "onClick": {
                  "openLink": {
                    "url": "https://~XXXXX"//カード自体をクリックした時に飛ぶURL
                  }
                },
                "icon": "BOOKMARK",
                "button": {
                  "textButton": {
                    "text": "質問内容を見る",
                    "onClick": {
                      "openLink": {
                        "url": "https://~XXXXX" //ボタンをクリックした時に飛ぶURL
                      }
                    }
                  }
                }
              }
            }
          ]
        }
      ]
    }
  };
  
スクリーンショット 2020-08-09 14.36.30.png

カード部分をクリックした時と、「質問内容をみる」をクリックしたときで、リンク先が異なるよ。
Iconはすでに用意されているものを使ったよ、カスタムもできるみたい。


できること3.画像をメッセージにつけて送る
テキスト以外にも画像をつけてメッセージを送れるよ。また、その画像をクリックした時に、
決めたURLに飛ばすこともできるよ。

  var message = {
    "cards": {
      "header" : {
        "title"   : "systemBotだよ",
        "subtitle": "相談・質問に答えるよ",
        "imageUrl": "https://~XXXXX" ,//アイコン画像のURL
        "imageStyle": "IMAGE"
      
      }, 
     "sections": [
        {
          "widgets": [
            {
              "image": {
                "imageUrl": "https://~XXXXX",//表示したい画像のURL
                "onClick": {
                 "openLink": {
                    "url": "https://qiita.com/akky-tys" // クリックしたときに飛ぶURL
                  }
                }
              }
            }
          ]
        }
      ]
    }
  };
  
スクリーンショット 2020-08-09 14.13.24.png

このイラストをクリックすると、指定したURL、今回は私のQiitaのページに飛ぶよ。


できること4 いろんなボタンをつけてメッセージを送る

  var message = {
    "cards": {
      "header" : {
        "title"   : "systemBotだよ",
        "subtitle": "相談・質問に答えるよ",
        "imageUrl": "https://~XXXXX" ,//アイコン画像のURL 
        "imageStyle": "IMAGE"
      
      }, 
     "sections": [
        {
          "widgets": [
             {
              "buttons": [
                {
                  "imageButton": {
                    "iconUrl": "https://~XXXXX" ,//アイコン画像のURL
                    "onClick": {
                      "openLink": {
                        "url": "https://www.google.com/search?hl=ja&source=hp&ei=8YQvX9L-CdT6-QbUqYrIBw&q=relaxed%E3%81%A8%E3%81%AF&oq=relaxed%E3%81%A8%E3%81%AF&gs_lcp=CgZwc3ktYWIQAzIFCAAQzQIyBQgAEM0COgQIABAEOgoIABCxAxCDARAEOgcIABCxAxAEOgYIABAEEAM6BQgAELEDOgoIABCxAxBGEP8BOgQIABAKOgIIADoGCAAQBBAKOggIABCxAxCDAToHCAAQRhD_AVCIwpkBWOLkmQFg7eaZAWgFcAB4AIABtwGIAbQKkgEDOS40mAEAoAEBqgEHZ3dzLXdperABAA&sclient=psy-ab&ved=0ahUKEwiSu6OyrY3rAhVUfd4KHdSUAnkQ4dUDCAk&uact=5"
                      }
                    }
                  }
                },
                {
                  "imageButton": {
                    "icon": "EMAIL",
                    "onClick": {
                      "openLink": {
                        "url": "mailto:me@example.com"
                      }
                    }
                  }
                },
                {
                  "textButton": {
                    "text": "Qiitaのページを見る",
                    "onClick": {
                      "openLink": {
                        "url": "https://qiita.com/akky-tys"
                      }
                    }
                  }
                }
              ]
            }
          ]
        }
      ]
    }
  };
スクリーンショット 2020-08-09 14.58.11.png

こんな感じで3種類のボタンをつけることができたよ。
用途に合わせてデザインを変えることができて良い感じだね。

今日はここまで!Card形式を使うことで、Messageのデザインやできることがぐっと増えるね。

##参考にさせてもらったもの
GoogleChatAPI

4
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?