teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

追記

2020/08/17 08:59

投稿

ninba
ninba

スコア1

title CHANGED
File without changes
body CHANGED
@@ -60,4 +60,5 @@
60
60
  }
61
61
  ```
62
62
  のようになりました。
63
- json関係でのミスではないかと思うに至った理由は、私がpythonの通信周りについてほとんど知識がない事、真偽値以外のパラメータは正常に機能する事が事実としてあるので、真偽値と文字列の違いがjsonを送る上で何かに引っかかっているのではと素人ながら考えたからです。
63
+ json関係でのミスではないかと思うに至った理由は、私がpythonの通信周りについてほとんど知識がない事、真偽値以外のパラメータは正常に機能する事が事実としてあるので、真偽値と文字列の違いがjsonを送る上で何かに引っかかっているのではと素人ながら考えたからです。
64
+  また、`"unfurl_links": true,"unfurl_media": true`とした時は`true`という文字列が認められないという旨のエラー("や'で囲まれていない文字列として扱われてしまう)が、`"unfurl_links": 'true',"unfurl_media": 'true'`とした時は、質問の本題と同じくbotは動くもののリンクやファイルの展開がされないという状態になります。

2

一部詳細を追記

2020/08/17 08:59

投稿

ninba
ninba

スコア1

title CHANGED
File without changes
body CHANGED
@@ -2,7 +2,7 @@
2
2
   JSONで真偽値を扱う
3
3
 
4
4
  #コード
5
-  AWSのlambdaとSlackのAPIを使ってSlack上でBotを動かしています。基本的には正常に動作するのですが、真偽値を返す必要がある機能だけ正しく機能しません。具体的には以下の`"unfurl_links": True,"unfurl_media": True`(リンクや画像を展開させるか否かの設定です)。おそらく、Jsonの送り方に何か誤りがあって思い通りいかないと思われるので、お力添えいただければ幸いです。
5
+  AWSのlambdaとSlackのAPIを使ってSlack上でBotを動かしています。基本的には正常に動作するのですが、真偽値を返す必要がある機能だけ正しく機能しません。具体的には以下のコード`"unfurl_links": True,"unfurl_media": True`(リンクや画像を展開させるか否かの設定です)についてですが、これらのコードが無い場合と同じ挙動をします(bot自体は動くものの、リンクやファイルの展開がされない)。おそらく、Jsonの送り方に何か誤りがあって思い通りいかないと思われるので、お力添えいただければ幸いです。
6
6
  ```
7
7
  def post_message_to_slack_channel(message: str, channel: str, channelId: str, user: str, image: str):
8
8
 

1

追記

2020/08/17 08:50

投稿

ninba
ninba

スコア1

title CHANGED
File without changes
body CHANGED
@@ -30,8 +30,34 @@
30
30
  }
31
31
  ]
32
32
  }
33
- req = urllib.request.Request(url, data=json.dumps(data).encode(), method="POST", headers=headers)
33
+ req = urllib.request.Request(url, data=json.dumps(data).encode('utf-8'), method="POST", headers=headers)
34
34
  urllib.request.urlopen(req)
35
35
 
36
36
  return "OK"
37
- ```
37
+ ```
38
+
39
+ 追記
40
+ `"unfurl_links": True,"unfurl_media": True`はこちらから送信しているデータです。
41
+ `json.dumps(data).encode('utf-8')`をログに出力させると、
42
+
43
+ ```
44
+ {
45
+ "token": "mkGZRssFyF4k6U0DcczP4p1O",
46
+ "channel": "important_timeline",
47
+ "text": "<https://qiita.com/kamata1729/items/8d88ea10dd3bb61fa6cc>",
48
+ "unfurl_links": true,
49
+ "unfurl_media": true,
50
+ "username": "aaa",
51
+ "icon_url": "https://secure.gravatar.com/avatar/6d5e0dbbc3866bd59540ee26b5fc1969.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2Fdf10d%2Fimg%2Favatars%2Fava_0014-512.png",
52
+ "attachments": [
53
+ {
54
+ "fallback": "Plain-text summary of the attachment.",
55
+ "color": "#2eb886",
56
+ "footer": "\u30cf\u30f3\u30af\u541b \uff5c \u30ea\u30d7\u30e9\u30a4\u306f\u30ea\u30f3\u30af\u3092\u30af\u30ea\u30c3\u30af\u2192 <#C0175MJ0D3Q|important_timeline>",
57
+ "footer_icon": "https://3.bp.blogspot.com/-jtvaRX9n8OU/VaMOHGaVeRI/AAAAAAAAviQ/D9omX3FtbPw/s800/boy_05.png"
58
+ }
59
+ ]
60
+ }
61
+ ```
62
+ のようになりました。
63
+ json関係でのミスではないかと思うに至った理由は、私がpythonの通信周りについてほとんど知識がない事、真偽値以外のパラメータは正常に機能する事が事実としてあるので、真偽値と文字列の違いがjsonを送る上で何かに引っかかっているのではと素人ながら考えたからです。