Chatworkでエイリアスアカウント

つくったもの

  • Chatworkでスタッフからの質問を受け付けるbot
  • hoge株式会社ヘルプデスク」というChatworkアカウントに話しかけたら、回答者が集まるグループチャットへ転送してくれる
  • 回答者グループチャットの参加者が問い合わせに匿名で返信出来る




■質問者の利用イメージ

ヘルプデスクアカウントに、直接質問をすると、中の人が誰かはわからないけど返信がくる

f:id:xxshokoxx:20180109165723j:plain



実際のChatwork画面
f:id:xxshokoxx:20180109121916p:plain



■回答者の利用イメージ

グループチャットで、来た質問に答えられる人が直接返信をすると、ヘルプデスクアカウントが代行して返信をしてくれる

f:id:xxshokoxx:20180109123336j:plain



回答者のChatwork画面
f:id:xxshokoxx:20180109130202j:plain


【返信可能MSG】とついているメッセージに、普段通りに返信する
f:id:xxshokoxx:20180109130051j:plain




構築方法

  1. 「サービスデスク問い合わせアカウント」といったChatworkアカウントを作成し、API Keyを確認
  2. 問い合わせ担当の人とbotが参加するグループチャットを作成し、1.で作成したアカウントと問い合わせ担当者を招待
  3. 以下の手順でスクリプトを作成

Chatworkエイリアスアカウントのプロジェクトキー

1Rpm-_kZprVA4BusiDxHnebHWR6wprUTarpnHvJaTH7BriMuCjKeiLl5A

スクリプト作成してプロジェクトキーを読込むまでの手順がわからない方はこちらを参考に

Chatworkのコンタクト申請を自動で承認 - とろろ

ソースコード(使用するだけなら読む必要はありません)

https://github.com/shoko3168/gas-projects/blob/master/CWAliasAccount.gs

実現手順

まず、以下のコードどちらかをGoogle Apps Scriptのエディターに張り付け、保存します

最低限の設定Version
// Library project key
// 1Rpm-_kZprVA4BusiDxHnebHWR6wprUTarpnHvJaTH7BriMuCjKeiLl5A
function checkChat() {
  return CWAliasAccount.checkChat({
    'token': '【d921bac31・・・・といったChatworkのトークンを入力する】', 
    'target_room': '99999999', 
  });
}
細かい設定を行うVersion
// Library project key
// 1Rpm-_kZprVA4BusiDxHnebHWR6wprUTarpnHvJaTH7BriMuCjKeiLl5A
function checkChat() {
  return CWAliasAccount.checkChat({
//     'token': PropertiesService.getScriptProperties().getProperty('TOKEN'), 
    'token': '【d921bac31・・・・といったChatworkのトークンを入力する】', 
    'log_sheet_url': 'https://docs.google.com/spreadsheets/d/***********/edit', 
    'target_room': '99999999', 
    'is_reply': true,
    'reply_message': '上記発言を承りました', 
    'inquiry_header': '【返信可能MSG】問合元:', 
    'api_base_url': 'https://api.chatwork.com/v2', 
    'base_url': 'https://www.chatwork.com', 
  });
}

パラメータの説明

パラメータ名 入力内容 説明
token Chatworkのトーク Chatwork右上の、API設定から発行できる32桁くらいの「API Token」
log_sheet_url ログを出力するスプレッドシートのURL 設定すると、そのSpreadsheetにメッセージ履歴が保存されます
target_room 質問を投げる先のグループチャットroom_id グループチャットを開いていると、URLに「#!rid99999999」とあるのですが、その数値部分を指定します
is_reply エイリアスアカウントに質問をした際、自動応答を行います true:自動応答する、false:自動応答しない
reply_message 自動応答されるメッセージ is_replyがtrueの時、自動応答される内容です
inquiry_header 返信可能なメッセージのヘッダー グループチャットに投下されるメッセージの先頭につく目印です
api_base_url Chatwork APIのURL 今のところはこのままでOKです
base_url Chatworkのドメイン KDDIを使っている時は、「https://kcw.kddi.ne.jp」に変更した方が良いです。メッセージのリンクに使用
画面の上の方で「checkChat」を選択し、三角の実行ボタンを押します

f:id:xxshokoxx:20180109112624j:plain

※ここで権限を要求されると思いますが、OKします

自動チェックの設定

先ほど動作確認をした「checkChat」というのが、誰かから問い合わせが来ていないかを監視する機能になります。
問題無く動作したら、今度は「checkChat」を1分間に1回呼び出す設定をします。

上のメニューから 編集→現在のプロジェクトのトリガー を開き、以下のような設定で「保存」をします

f:id:xxshokoxx:20180109112956j:plain

これで1分間に1回、新着メッセージを確認してくれるようになり、設定が完了です。

Chatworkのコンタクト申請を自動で承認

Chatworkで、届いたコンタクト申請を承認し続けるだけのGAS(Google Apps Script) 作りました!
botアカウントのお供にどうぞ
応用するとこんなこと(Chatworkでエイリアスアカウント)も出来たりします

ソース
https://github.com/shoko3168/gas-projects/blob/master/AcceptAllIncomingRequests.gs
サンプル

// Add Library
// 1OcZAwzfi3imm_FwpbTPAtDTi4HeNFBb5NNE04mh4SEtKynCY1kaWyg5K
function test() {
  var cw = new AcceptAllIncomingRequests.CW({'token': '***token***', 'is_notify': true, notify_room: '999999999'});
  cw.acceptFriends();
  cw.testNotify('test send message');
}

導入手順

GmailログインしているChromeブラウザでマイドライブを表示
https://drive.google.com/drive/my-drive

Google Apps Scriptを選択(ない場合は、「アプリを追加」)
f:id:xxshokoxx:20171228202054j:plain

コードをコピペして保存、API KEYと「notify_room」の値を書き変える
f:id:xxshokoxx:20171228202220j:plain

リソース→ライブラリ
f:id:xxshokoxx:20171228202404j:plain

1OcZAwzfi3imm_FwpbTPAtDTi4HeNFBb5NNE04mh4SEtKynCY1kaWyg5K
を追加

「test」を実行

cw.testNotify('test send message');
の行は、動作確認のためグループチャットに「test send message」と通知するだけなので、動作確認が出来たら削除して大丈夫です

notify_roomに、通知したい部屋のroomId(ChatworkのURL「rid=」以後の数値)を入れておくと、承認した時にその部屋にメッセージが飛びます

動作確認が出来たら、最後に1分に1回自動で動作するように設定します。
f:id:xxshokoxx:20171228202916j:plain
設定例
f:id:xxshokoxx:20171228202948j:plain

打上げ!

はじめに

この記事は、数学カフェ_4次元コンテンツ出展の記録 Advent Calendar 2016の、22日目となる記事で、テーマは「打上げ」です。

技術も四次元もあまり関係のない箸休めDAYです。ご了承ください。

f:id:xxshokoxx:20161221160421j:plain

打上げ(食事)の記録

お台場近辺の食事処はちょっと調べてみると、
「飲食不毛地帯
「食の孤島」
といった絶望的なワードが飛び交っていて。

そんな中私たちが行った食事処の紹介をさせていただきます。
(こんな趣旨で合っているんだろうか・・・?)

サイエンスアゴラ1日目の後!

我々にとってサイエンスアゴラ展示1日目である11月5日が終わり、夜アゴラ(近場でやった、公式の二次会)へ。
お酒を楽しみつつも食欲が満たされなかったのでカレー屋さんを予約して電車移動しました。

https://tabelog.com/tokyo/A1313/A131306/13182056/

「飲食不毛地帯の救世主」
「食の孤島に希望の光」
と評されているカレー屋さん。(冒頭のアレです)
近場で働く知人は週に1度は行くお店だそうです。

平日やイベントがあるときは混んでいるのかもしれませんが、
休日の夜はお店だけではなくビル全体が静かなくらい空いていました。
良い穴場感・広々感を味わいました( ^ω^ )
カレーもとても美味しかったです♪

f:id:xxshokoxx:20161105192732j:plain
f:id:xxshokoxx:20161105192901j:plain
↑味のあるメニュー(SeafoodもVegetableも「野菜カレー」と訳されている)と、美味なカレー

2日目夜!

西麻布にある焼肉屋さんを予約!
不毛地帯を諦め、未来館から新橋、更にそこからバスで20分と、だいぶ移動して美味しいお店へ!

f:id:xxshokoxx:20161221162658j:plain
f:id:xxshokoxx:20161106183023j:plain
失敗1. 予約時間より相当早めに到着してしまい、外でおさんぽして時間を潰すハメに
失敗2. なんだかんだで人数も増え、席がだいぶ狭くなってしまった・・!

別の日に打上げ!

開発基地として利用させていただいていた、みらい研究所様からご提案いただき、閉業後のみらい研究所で打上げさせていただきました!
VRお絵描きが楽しかったですね
ピザもお酒も手配して頂き、盛り上がれました!

f:id:xxshokoxx:20161127211612j:plain
f:id:xxshokoxx:20161127204648j:plain
VRお絵描き!

まとめ

  • お店がない場合、数駅なら電車で移動してしまったほうがお店選択肢が増える!
  • お台場でのイベントだと、新橋あたりが電車でも1本で行けて良いのかな?
  • ピザは、大手いくつか覗いて半額キャンペーンとかやってるところを探す!

リモートチーム

この記事は、数学カフェ_4次元コンテンツ出展の記録 Advent Calendar 2016の、17日目となる記事で、テーマは「ミーティング方法」です。

今回の企画では、コミュニケーションをほとんどSlack上で行っていました。
Slackを使い慣れてない方もいる中、Slack Teamを作成する時に、私が毎回意識していることをざっとまとめてみます。

はじめに

  • Slackを導入することを決めたら、その場でTeam作成して全員を招待
  • 出来ればスマホ版アプリ、PC版アプリを導入してもらう
  • Push通知などの設定をサポートする

ルール

  • ダイレクトメッセージは使わず全てPublicなchannelでやりとりする
  • generalのchannelでは会話しない、一方的な周知のみを行う(絵文字でのリアクションはOK)

それぞれが、ひとりごと用の自分部屋をつくる(分報)

  • times_○○(名前) というPublicなchannelを、全員分作り、全員で参加する
  • 誰も返信しなくて良い
  • 今何しているかを気軽につぶやく部屋
  • 不明点があっても、調べる前に聞いてOK、あわよくば返信があるかも
  • 誰かに用がある時は、ダイレクトメッセージではなくその人の部屋に呼びかけに行く

general のchannelで最初に周知するテンプレ

カンタンな機能紹介、絵文字を使う楽しさ、気軽さを伝える

f:id:xxshokoxx:20161219010708j:plain

部屋の作成方法、招待方法を教える

https://i.gyazo.com/e2ac4075a21fc930af23f1df3f28f4cf.gif

コードを貼るときは「```」~「```」で囲みます

他の人の発言、どう書いてるんだろうーと気になったら、以下のようにコピペすれば元の文字が復元されます

gyazo.com

テンプレ

======
また、強制はしませんが、このルールでやるとSlack運営しやすいのでオススメです。
1.基本的に、個人宛のメッセージであっても *DIRECT MESSAGEは使わない*
※個人宛のメッセージは、その人のtimesに投稿する

2.この#general チャンネルは基本情報発信のみでログは流さず *Readonly* (周知するのみ)に使う
例:
「何月何日に、Skype会議をしましょう!」←これは発言するけど
「了解です、参加します」←こういうのは発言しない
日程調整とかは、別の部屋でやって周知事項・決定事項だけを流す部屋にしとくと後から見返しやすいです
======
以上です、よろしくお願いしますー!


上記周知が完了したら、コミュニケーション用に絵文字をいくつか追加し、追加したことを連絡してみたり

おまけ - リモートもくもく会

Appear.inでビデオチャットをつなぐ

https://appear.in/

  • URLを共有するだけでビデオチャットが即座につながる
  • Skypeと違って、IDを登録したりが必要ないので便利
  • 画面共有も可能(Chrome Extension入れる必要あり)

ウミガメであそぶLINE BOT

ウミガメのスープで遊ぶLINE BOTを作りました。

こちらから友達になれます。
https://line.me/R/ti/p/%40zgp5458f

LINEトーク画面下部にウミガメMENUというのがあるので、そこから色んなことが出来ます。
参加していない時は、通知オフにするかブロックすることをオススメします。
(ブロックするとこちらが保持しているデータは消えるのでブロック解除すればいつでも再開できます)

要望一覧
ウミガメLINE BOT要望など - Google スプレッドシート

出題者の流れ
・出題者になると発言する
f:id:xxshokoxx:20161205140112p:plain

・問題と、回答を発言する(※キャプチャが古いですが、今は制限時間の確認もあります。)
f:id:xxshokoxx:20161205140207p:plain

・誰かから質問があると、このようにLINEが来るので回答します
f:id:xxshokoxx:20161205140248p:plain

・回答時に補足説明を付けたい場合は、「はい」とか「いいえ」とか言う前に、先に発言します
※「はい!」と答えたいけど、「ただし、同じでなくても成り立つかもしれません」と補足を入れたい場合の手順
f:id:xxshokoxx:20161205140421p:plain

・出題者が使えるコマンドは以下の通りです

はい そのまま回答します
いいえ そのまま回答します
関係ない そのまま回答します
多分はい そのまま回答します
多分いいえ そのまま回答します
はい! はい(★良い質問です!)と回答します
いいえ! いいえ(★良い質問です!)と回答します
関係ない! 関係ない(★良い質問です!)と回答します
正解 正解発表して問題を終わります
質問パス 質問をパスします(質問は公開されません)ゲームの進行の妨げになる質問が来たと判断したら、使ってください
問題取下 問題を取下げて、回答を公開します。間違えて出題してしまった時や、制限時間を超えた時や、用事で対応出来なくなった時などに使ってください

コマンド一覧

コマンド 使える人 説明 使えるタイミング
出題者になる だれでも 出題します 誰も出題していないとき
質問 回答者 直前の発言を、質問します 出題中、誰も質問していないとき
はい 出題者 回答します 出題中、誰かから質問がきたとき
いいえ 出題者 回答します 出題中、誰かから質問がきたとき
関係ない 出題者 回答します 出題中、誰かから質問がきたとき
多分はい 出題者 回答します 出題中、誰かから質問がきたとき
多分いいえ 出題者 回答します 出題中、誰かから質問がきたとき
はい! 出題者 回答します 出題中、誰かから質問がきたとき
いいえ! 出題者 回答します 出題中、誰かから質問がきたとき
関係ない! 出題者 回答します 出題中、誰かから質問がきたとき
正解 出題者 正解発表して問題を終わります
質問パス 出題者 "質問をパスします(質問は公開されません) ゲームの進行の妨げになる質問が来たと判断したら、使ってください
問題取下 出題者 "問題を取下げて、回答を公開します。間違えて出題してしまった時や、用事で対応出来なくなった時などに使ってください
おつ! だれでも みんなに、おつ!って言います いつでも
なるほど! だれでも みんなに、なるほど!って言います いつでも
ニックネーム修正 だれでも 直前の発言に、ニックネームを変更します。使い方:○○ と発言する→ニックネーム修正と言うと、ニックネームが○○になります" いつでも|

ハカバくんChatworkリマインダ(β版)

・毎週水曜日は売上の確認をする
・毎月25日に各社に請求書の発行をする

といった決まった定期的なお仕事を、
Chatworkへお知らせやタスク起票してくれるサービスです。


タスク設定画面(Google Spreadsheet)での設定イメージ
f:id:xxshokoxx:20160818164730j:plain

該当する日になると、このようなメッセージが届きます。
f:id:xxshokoxx:20160818171025j:plain


また、グループチャットへハカバくんを招待することでグループ全員宛にタスクを起票することなども出来ます。


www.chatwork.com
上記リンクからハカバくんとお友達になりさえすれば、以下のフォームからさくっと登録できるので是非試してみてください。
登録した日から【1ヶ月間】、無料で試用することが出来ます。
(承認だけ、手動なので最大1日お待ちください・・・><)

タスク設定画面の申請はこちらから
docs.google.com

申請を行うと、ハカバくんから以下のようなメッセージが届きます。
f:id:xxshokoxx:20160818164921j:plain


有料版(月額課金)はここから購入出来ます。無料試用してお気に召しましたら購入してください。
※無料版で使っていたシートはそのまま引き継げます
shoko3168さんのお店 | AnyPay(エニーペイ)

FacebookメッセンジャーでTwitter実況

Twitter実況クライアントのTwitterBOT(仮)さん

使用イメージ

こういうよくあるTwitterでのハッシュタグ付き実況を
https://i.gyazo.com/2fb250481aa84dab91ce0feba4926f01.png
Facebookメッセンジャーだけで出来るようにします
https://i.gyazo.com/b9797bac332ebaaeee43fe321587cdce.jpg

解説

  • 「#tororo_test」のタグ付きのツイートがあると、TwitterBOT(仮)さんからFacebookメッセージが送られてきます
  • TwitterBOT(仮)さんにメッセージを送ると、自動で「#tororo_test」とハッシュタグをつけてTweetしてくれます
  • TwitterBOT(仮)さんとメッセージのやりとりをするだけで実況が出来るヾ(・ω・)ノゎぃゎぃ

使い方 (※プロトなので、取り急ぎ作者の友人限定公開です)

初期設定

  • はなしかける

TwitterBOTさんにFacebookメッセージを送ります
https://i.gyazo.com/d15ec568c235cbef8f7675ee9fbdf984.jpg

  • 名前とか言う

https://i.gyazo.com/20bdabe8a329bfa963b4e587e5e8221d.jpg

  • 実況開始って言う

https://i.gyazo.com/79c1015ab7a3c1fb856589dfc7fb2c20.jpg

  • 認証URLをクリックするとよくあるコレになるので承認します

https://i.gyazo.com/553d587d8843db9d5037c4c16d21f2a2.jpg

  • こんな感じのショボめの画面に飛んだら初期準備OKです

https://i.gyazo.com/cc6011208f4b6b83fc9ba4ae3e920e63.png

実況のしかた

  • TwitterBOT(仮)さんにメッセージすると、その内容がそのままTweetされます

実況の終わり方

  • TwitterBOT(仮)さんに「#実況終了」ってメッセージすると、実況終わります。新しい発言があっても届かなくなります。

ハッシュタグの変え方

  • TwitterBOT(仮)さんに「#ハッシュタグ変更」ってメッセージすると、変え方を教えてくれます

https://i.gyazo.com/778101fba48563afa97706fd23154c74.jpg