Typetalk ニュースレターを登録

Typetalk の最新情報、使い方や事例紹介などを毎月配信します。

ニュースレターの登録が完了しました。
ご登録ありがとうございます。

TypetalkのまとめAPIとAutomatorのクイックアクションでスニペットアプリを作る

仕様や画面は現行バージョンと異なる可能性があります。
Typetalkの最新版についてはこちらからご確認ください。

国産Web API Advent Calendar 2018の14日目の記事になります。


Typetalkにはまとめ機能と呼ばれる便利な機能があります。

チャットは会話のスピードが早く、過去のメッセージを見る必要が出てきた場合は、メッセージ検索などを利用することも多いでしょう。

メッセージ検索ではある程度キーワードを覚えておかないといけないうえ、検索でメッセージがヒットしたとしても、その会話の流れまで追うことは難しいです。

まとめ機能では「#〇〇に関する要望」「#12月14日の作業ログ」「#12月14日定例会議の議事録」のようなタグを付けておくと、後からその一連のメッセージを簡単に読み返すことができます。

まとめについては【会話別まとめ例を紹介】Typetalkまとめ機能をもっと活用しよう!で詳しく解説していますのでぜひご一読ください。今回はこのまとめ機能をAPIを使って操作してみます。

本稿でやること

macOS上で選択したコード(テキスト)を# スニペット まとめとして投稿できるようにしてみたいと思います。

事前準備

まとめをWebアプリ側で事前に作成する

まとめはAPIを使って作成することもできますが、今回は事前にWebアプリ側で作成しておきます。まずは適当にメッセージを投稿します。

メッセージを投稿メッセージを投稿

次にメッセージの左側のチェックボックスを選択し、画面上部の1個のメッセージをまとめに入れるをクリックします。

メッセージを選択メッセージを選択

まとめ名にスニペットと入力し、Enterを押します。

まとめを作成まとめを作成

メッセージの下に# スニペットと表示され、まとめに保存されました。

まとめを確認1まとめを確認1

メッセージの下に表示されているまとめをクリックすると、まとめに保存されているメッセージが表示されます。まだ1件しか登録されていません。これからこのまとめにAPIを使ってメッセージを追加するためのクイックアクションを作成していきます。

まとめたメッセージ一覧1まとめたメッセージ一覧1

後ほどAPIで利用するため、まとめを識別するためのまとめIDを取得しておきます。まとめ画面の上部のメニューから、まとめのURLをコピーをクリックします。

まとめのURLをコピーまとめのURLをコピー

https://typetalk.com/topics/11111/talks/22222のようなURLがコピーされます。talks/のあとにある22222の部分がまとめIDになりますのでメモしておきましょう。

ボットを作成する

次にメッセージを投稿するためのボットを作成します。ボットを作成して Typetalk トークンを取得を参考に以下のようなボットを作成してください。作成後、メッセージの取得と投稿のURLをコピーしてメモしておいてください。

メッセージの取得と投稿のURLメッセージの取得と投稿のURL

これで事前準備は完了です。

Automatorで、メッセージの投稿APIを使ったクイックアクションを作成

それでは早速クイックアクションを作成してきます。/Applications/Automator.appを開き、アプリケーションメニューからファイル > 新規 > クイックアクションを選択します。

ワークフローが受け取る現在の項目テキストを選択します。これでmacOS上で選択中のテキストを入力として受け取ることができます。
画面左のライブラリからJavaScriptを実行通知を表示を右側にドラッグします。画像のようになります。

AutomatorAutomator

実行するJavaScriptは以下のスクリプトをペーストしてください。1. メッセージの取得と投稿のURL2. まとめIDの部分だけはメモしておいた値を設定してください。

function run(input, parameters) {
  const url = 'https://typetalk.com/api/v1/topics/11111?typetalkToken=0123456789ABCDEFG' //1. メッセージの取得と投稿のURL
  const talkId = 22222 //2. まとめID

  app = Application.currentApplication()
  app.includeStandardAdditions = true

  const message = "```\n" + "" + input + "\n```"
  const data = JSON.stringify({
    'message': message,
	  'talkIds[]': talkId
  })
  
  const command = `curl -H 'Content-Type: application/json' -d '${data}' '${url}'`;
  app.doShellScript(command)
  
  return input
}

 

ここで利用しているメッセージの投稿APIはメッセージを投稿するためのAPIでmessageプロパティで本文を設定します。更にtalkIds[]にまとめIDを設定することで、メッセージ投稿と同時にまとめに入れることができます。

Command+SでPost to Typetalkという名前を付けて保存しましょう。これでクイックアクションの作成が完了しました。

それでは試してみましょう。任意のアプリケーションでテキストを選択して右クリックし、サービス > Post to Typetalkを選択します。

サービスを選択サービスを選択

選択したテキストがTypetalkに投稿され# スニペットまとめに保存されているはずです。

まとめを確認2まとめを確認2

もう一度まとめのメッセージ一覧を開くと、複数のメッセージが表示されます。クイックアクションが完成したので、メモしたいコードをどんどん選択して追加しましょう。

まとめたメッセージ一覧2まとめたメッセージ一覧2

このようにTypetalkのまとめAPIを活用することで、簡単にスニペットを保存するクイックアクションが作成できました。他にもいろいろな活用方法があると思いますのでぜひみなさんもお試しください。