SlackのIncoming Webhooksが失敗した時の対処
公開日
我が家のIoTとしてSlackのIncoming Webhooksを活用したサービスをいくつか作っているのですが、どういうわけかここ最近になっていずれも通知に失敗しているようでした。
週末に原因を調べてみたところ思わぬところに原因があることが判明し対処することができましたので、その内容をメモしておきたいと思います。
Incoming Webhooks失敗の原因
我が家のネットワークが不安定になっているのか、DNSの検索に失敗しているのか、Slackサイトへの通信路に問題があったのか、といろいろ切り分けて進めてみたところ、最終的にSlackサイト自身の問題に行きつきました。
一言でいうと、以前ドアセンサーを作ったときに想定していた問題を引き当てていたようです。
以下に抜粋します。
Slackサイトのフィンガープリントが変更になるかもしれませんが、その場合はChromeなら次のように最新版を確認できます。
- Slackサイトを表示させる
- F12キーでDeveloper Toolsを開く
- [Security]タブにある[View certificate]ボタンを押す
- [詳細]タブで、[拇印]というフィールドにある値を書き写す
そして上記手順に沿って最新のフィンガープリント(拇印)を確認すると次のような値に更新されていることが確認できました。
- 有効期間:2018/02/08から2021/02/12
- 拇印:c10d5349d23ee52ba261d59e6f990d3dfd8bb2b3
古いフィンガープリントに設定された有効期間は当時確認していなかったのですが、最新のものが2018/02/08から有効なので、私が参照していた古いものはすでに無効になっているはずです。
そのためここ最近の、おそらく2月8日以降の通知が失敗していたものと思われます。
対処したファームに更新
対処方法はArduinoソースコード中に埋め込む文字列を更新して、再度コンパイルとファームのアップロードという手順で行います。
例えばドアセンサーのプログラムであれば、以下フォーカスした行の文字列を更新します。 ※公開済みの記事のほうも更新済みです。
1 2 3 4 5 |
// Slack incoming web hook URL const char* slackUrl = "https://hooks.slack.com/services/<<Your Slack Incoming Webhooks URL>>"; const char* slackFingerPrint = "C1 0D 53 49 D2 3E E5 2B A2 61 D5 9E 6F 99 0D 3D FD 8B B2 B3"; const char* slackPayload = "payload={\"text\":\"The door opened.\"}"; const char* slackUserAgent = "IoT_DoorSensor/1.0"; |
約1年ぶりに再コンパイルをしたことになるので、もしかしてライブラリのバージョン違いなどの理由でコンパイルがエラーになったらどうしようと思いましたが、特に問題なくファームのアップロードまで完了しました。
そして動作確認をしたところ、フィンガープリントの更新によってこれまで同様に元気に通知が行き届くようになり、フィンガープリントが古いことが原因であることが確認できました!
次の有効期限が2021年と、おそらくもう更新することはないものと思いますが、何があるかわからないのがWEBなので(笑)、記念にメモを残すことに決めました。
レスポンシブ広告
関連記事
-
ATmega328へArduinoを書き込む
Arduino UNO等のArduinoボードを購入すると、USB端子に直接接続 …
-
ドア開閉イベントをSlackへお知らせするセンサーを作る
最近Raspberry Piを手に入れてから個人的にマイコンが流行っていて、WE …
-
ArduinoのPinChange割り込みライブラリとタイマーライブラリを使う
前回、素早くマイクミュートやPCスリープが行えるボタンを自作することで、とても晴 …
-
Attiny13Aの工場出荷時の書き込みエラーを対策
Attiny13Aは工場出荷時に低速の動作周波数になってる模様です。 この時Ar …
-
ATmega328の書き込み装置をArduino UNO用シールドとして作成
前回、AVRマイクロコントローラーのATmega328PへのArduinoブート …
-
「子ども見守りサービス」をDIYで自作する
最近「子ども見守りサービス」が注目されているようです。 どうも私は課金の発生する …
-
Arduinoでロータリーエンコーダーの動作確認
ロータリーエンコーダーは、よくボリューム調整のつまみに使われているようなモジュー …
-
素早くマイクミュートとPCスリープが出来るDIYボタンを作る
2020年はCOVID-19の影響で長期にわたる外出自粛が続きました。9月時点で …
- PREV
- ブルーフレームストーブの魅力に迫る!
- NEXT
- バッグに常備するLEDライトを試しました