Slack

hubotをslackと連携させて動かす

hubotをslackと連携させて動かす 準備 nodejsの環境構築は以下を参照ください nodenv環境の構築(Mac) Slack tokenの取得は以下から https://api.slack.com/apps インストール 「yo」「generator-hubot」という必要なモジュールをインストール 色々出力されるが、「Everything looks all right!」と最終的に表示されればOK インストールしたモジュールを使えるようにシェルの再起動をしておく ※何も表示されない Bot作成 yoを使ってBotを作成する 「May we anonymously report usage statistics to improve the tool over time?」はとりあえず「No」と回答 「Owner」「Bot name」「Description」は適当に、とりあえずデフォルトで回答 「Bot adapter」は「Slack」を指定 これでhubotを使えるようになったので動かしてみる 「bin/hubot」で実行し、「Enter」キーを押すと「【Bot name】>」とプロンプトに入るので 「【Bot name】 ping」と打ってみて「PONG」と返って来れば成功 プロンプトを抜けるには「exit」 Slack連携 作られたhubotをslackと連携する 「HUBOT_SLACK_TOKEN=【slackのtoken】 ./bin/hubot –adapter slack」で実行すれば連携できる slack側で、botに「ping」と話しかけて「PONG」と返って来れば成功 (任意)いちいちトークンを指定して実行するのが面倒なのでスクリプト化しておく 次からはこのスクリプトを実行するだけでOK Botの開発 ping PONGだけしててもしょうがないので(他にもtimeなどデフォルトの機能はあるが) 何か簡単なスクリプトを書いてみる ※開発の仕方は公式のGithubを読むのが一番良さそう https://github.com/hubotio/hubot/blob/master/docs/scripting.md …

hubotをslackと連携させて動かす Read More »

GAS(Google Apps Script)でSlack BotにPostするお話

GAS(Google Apps Script)を使ってSlack BotにPostするお話 このモチベーションは、GASを使えば簡単に、スクリプトのスケジュール実行ができるので Botとの相性が良さそうと思ったのがきっかけ 参考: Google Apps Scriptはスケジューリングできるって まずはSlackのLibrary Keyを登録 「Resources」>「Libraries」 バージョンはひとまず最新にしておく ポストするコードはこんな感じ myFuncrtionを実行するといける 最初は認証やら聞かれるのでOKしておく Variablesの部分は以下を参考に GAS(Google Apps Script)の小ネタ〜変数   slack botの作り方は以下を参考に Office365のOutlook APIをpythonで叩いてSlackに本日と翌営業日の予定をPostしようとしてみる(4)Slack Appの作成

Office365のOutlook APIをpythonで叩いてSlackに本日と翌営業日の予定をPostしようとしてみる(5)本日と翌営業日の予定をPostしようとしてみる

フルコードはこちら https://github.com/yoshi-island/o365_slack_work 前回の記事はこちら 本日と翌営業日の予定をPostしようとしてみる ごめんなさい、まだSlack Botレビュー中なので、Slackにポストはまだできていない でもこの通りにやればできるはず わかりやすいように、一旦ポストする内容をprintするようにしています python-slackclientを使うので、 python-slackclientをpipでインストール 同じ階層の先ほど作成したpassword_list.pyの内容に 先ほど控えたslackのtokenと、ポストしたいチャンネルのIDを記載 (チャンネルIDはブラウザでSlackチャンネルにアクセスした際のURLに記載されている) 同じ階層に以下のポストするこのようなファイルを作成する 汎用的でなくてすみませんが、以下の変数は自身の環境に合わせて書き換えとく これで実行すると、本日の予定と、次の出勤日(月〜金)の予定がPostされる いつの予定を出力したいかは「## get next business day events」を操作してくださいませ。 まだBotが動かないので、一旦print結果でご容赦、、 土曜日の場合は当日と翌月曜の予定が記載される 日〜木曜日の場合は当日と翌日の予定が記載される 金曜日の場合は当日と翌月曜の予定が記載される うん、とりあえず必要な情報取れてる。 Trouble Shooting Slack Botの投稿がうまくいかない場合は、Slack Distributionのチェックが全て付いていないかも ちょっと面倒くさいけど、全てがチェックつくように規約確認したり、Botの説明を記載したり頑張ってください。

Office365のOutlook APIをpythonで叩いてSlackに本日と翌営業日の予定をPostしようとしてみる(4)Slack Appの作成

Office365のOutlook APIをpythonで叩いてSlackに本日と翌営業日の予定をPostしようとしてみる しようとしてみるという理由は、slack botの申請がまだ降りていないので、実際にslackのポストまでは試せていないせいということ、、、 フルコードはこちら https://github.com/yoshi-island/o365_slack_work 前回の記事はこちら Slack Appの作成 以下ページからSlack Botを作っていく(Slackアカウントとワークスペースはある前提) https://api.slack.com/apps 以下の手順で作成していく。 基本的に、Botを作成した後、「Basic Information」と「Manage Distribution」のページで全て緑チェックがつくように操作していく (規約チェックとかBotの説明文追加とか結構大変) 最後にSubimitし、Slack社のレビュー?が通ったら晴れて使えるようになる OAuth Tokenは大事に控えておく すぐSlackのページにアプリ自体は追加されるが、レビュー状況はアプリのページから確認できる 続きはこちら

Office365のOutlook APIをpythonで叩いてSlackに本日と翌営業日の予定をPostしようとしてみる(3)Azure appからカレンダー一覧を取得する

Office365のOutlook APIをpythonで叩いてSlackに本日と翌営業日の予定をPostしようとしてみる しようとしてみるという理由は、slack botの申請がまだ降りていないので、実際にslackのポストまでは試せていないせいということ、、、 フルコードはこちら https://github.com/yoshi-island/o365_slack_work 前回の記事はこちら Python環境整備 Pythonは3.5.0でやる python-o365をインストール python必要モジュールをインストール python-o365にrequirements.txtが入っているのでそれらをダウンロードすれば良い これで無事にモジュールが入った Azureとの接続確認(Azure appからカレンダー一覧を取得する) 同じ階層にパスワードファイルを作成する 先ほど控えておいた、client idとclient secretを記載する 同じ階層に、このようなファイルを作成する 実行するとカレンダー一覧が取得できる 初回(o365_token.txtが無いと)は、Paste the authenticated url here: と聞かれるので Visit the following url to give consent: の後ろにあるURLにアクセスし、返ってきたURLを貼り付けると実行できる ここまでくればAzure(Office365)側はOK Trouble Shooting 以下のようなエラーが出たら、Azure Appを作る際に、Supported account typesに”Accounts in any organizational directory and personal Microsoft accounts (e.g. Skype, Xbox, Outlook.com)”を選択していない可能性があるので見直すべし 続きはこちら

Office365のOutlook APIをpythonで叩いてSlackに本日と翌営業日の予定をPostしようとしてみる(2)Azure App作成

Office365のOutlook APIをpythonで叩いてSlackに本日と翌営業日の予定をPostしようとしてみる しようとしてみるという理由は、slack botの申請がまだ降りていないので、実際にslackのポストまでは試せていないせいということ、、、 フルコードはこちら https://github.com/yoshi-island/o365_slack_work 前回の記事はこちら Azure App作成 次にAzure Appを作成する まずはAzure Portalにアクセス、先ほど作成したOffice 365のアカウントで入れる https://portal.azure.com/ 以下の手順で作成していく。 続きはこちら

Office365のOutlook APIをpythonで叩いてSlackに本日と翌営業日の予定をPostしようとしてみる(1)Office365トライアルアカウント作成

Office365のOutlook APIをpythonで叩いてSlackに本日と翌営業日の予定をPostしようとしてみる しようとしてみるという理由は、slack botの申請がまだ降りていないので、実際にslackのポストまでは試せていないせいということ、、、 フルコードはこちら https://github.com/yoshi-island/o365_slack_work Office365トライアルアカウント作成 まずはOutlookのアカウントをゲット 有料プランはお高いので、無料トライアルを登録 Office 365 を無料で試す 登録できたら以下からOutlookが確認できる https://outlook.live.com/calendar/ 一旦こんな感じでスケジュールが入っているとする CalenderとTaskという二種類のカレンダーを作っているので、今回は両方ともPostする 続きはこちら

Google Apps Scriptを使ってタスクをSlackにポストする2(User変数などGAS側の設定からSlackに投稿するまで)

Google Apps Scriptを使ってタスクをSlackにポストする1(Slack Appを作成するまで)の続き GASでコードの貼り付けまで まずは、Google Spread Sheetで、このようなタスクシートを作成する。内容は適当に。 「Tools」>「Script editor」をクリック。 このような画面に飛ぶので、もともと記載のあるfunctionは全て消してしまう。 そして、以下のコードを貼り付ける。 <>内の変数は適宜変更ください。 slack tokenの変数名は適当に名前をつけてください。 日付の計算が難しく、冗長になってしまった。。 slack token変数設定 貼り付けたら、先ほどのslack tokenの変数名の設定をする。 パスワード系の変数は、コードに直接書きたくないので、User変数として定義する。 「File」>「Project properties」をクリック。 変数定義する前に、project名をつけろと言われたら設定する。 「User properties」>「Add row」とクリック。 先ほど定義した変数と、tokenの値を入力して「Save」。 実行許可 実行関数「mainFunction」を選択する。 「Authorization required」と言われるので許可をする。 許可するアカウントを選んで進めていく。 実行 slackのポストするチャンネルで、作成したBotをinviteする。(「/invite 【ボット名】) GASのページの三角マーク(▶︎)より実行する。 無事に、未完了の直近タスク(1週間後までのタスクのうち「done」が付いていないタスク)だけがslackにポストされる。 以上

Google Apps Scriptを使ってタスクをSlackにポストする1(Slack Appを作成するまで)

Google Apps Scriptを使ってSpreadsheetの以下のようにまとめられたタスクのうち、1週間以内に期限が来るものをSlackにポストする ゴールイメージ 手順 https://api.slack.com/appsにアクセスする。 「Create New App」をクリック。適当な名前とワークスペースを選択して、New Appを作成する。 「Bots」を選択し、Botを作成する。 先ほどの画面(「Settings」>「Basic Information」)に戻り、「Install your app to your workspace」の右の三角を展開、「Install App to Workspace」より、インストールをする。 また、先ほどの画面(「Settings」>「Basic Information」)に戻り、「Manage distribution」の右の三角を展開、「Distribute App」をクリックする。 「Manage Distribution」の画面に飛ぶので、「Add OAuth Redirect URLs」の右の三角を展開、「Set Up Redirect URLs」をクリックする。 一応適当なURLを入れて、「Save URLs」で保存。 あとで使うので、「OAuth Access Token」と「Bot User OAuth Access Token」をコピーしておく。 「Manage Distribution」の画面に戻り、「Remove Hard Coded Information」の右の三角形を展開、チェックボックにチェックを入れる。 すると、「Activate Public Distribution」のボタンがActiveになるのでクリックする。 同じ「Manage Distribution」の画面を下にスクロールし、「Submit to the Slack …

Google Apps Scriptを使ってタスクをSlackにポストする1(Slack Appを作成するまで) Read More »

golangでbot作成

兎にも角にもgoに慣れよう、とのことで、slack botをgoで作ってみた。 以下の記事を大変参考にしました。 今更やけど、Go言語でSlack APIを使ってみた!! 動きとしては、とあるキーワード(今回は#golang)のtweetsを拾ってslackにポストするもの。 # go get anaconda tweet apiを使うにはanacondaがいいらしい。 # GOPATH/GOROOTの定義 # goのファイル構造 ファイル構造はこんな感じに。 実行ファイルはsrcの下に置くのがお決まり Goコードの書き方 Goコードはワークスペース内に置いておく必要があります。ワークスペースはルートに以下の3つのディレクトリを持つディレクトリ階層です。 srcはパッケージに構成された(1ディレクトリに1パッケージ)Goのソースファイルを含み、 pkgはパッケージオブジェクトを含み、 binは実行形式コマンドを含みます。 # 実行ファイルの用意 # 変数を他パッケージから読み込む 先ほどの引用、よく見ると「1ディレクトリに1パッケージ」と書いてある。 srcはパッケージに構成された(1ディレクトリに1パッケージ)Goのソースファイルを含み、 素直に、src配下にディレクトリを作成して変数を収めるファイルを配置 変数を収めるコードの冒頭にパッケージ名を定義する(goファイルはどれもパッケージの必要) この時、変数の冒頭は必ず「大文字」で記述する! じゃないとこうなる 読み込むファイルでは、packageとしてimportすること、 「パッケージ名.変数名」で記載することを忘れない # 実行 これで問題なく動くはず 意味はわからないがtweetは拾えている。