🎨

TouchDesignerでLINEに通知を送る方法

2024/02/11に公開

こんにちは。TouchDesignerでLINEに通知を送りたいですよね。
特にWebSocketを使用してネットワークが切れていないかなと不安になっている中、通知してくれたほうが助かります。
調べていく中で、Slackを利用した通知方法などはありますが、LINEでしている人はいなかったと思うので、この記事でそのやり方を説明しようと思います。

前提条件

まず前提をお話します。この記事を書いてる人間、つまり私はド素人です。プログラミングを生業にしている訳ではありません。ご了承ください。

  • TouchDesigner
    • バージョン:2022.35320
  • Python
    • 3.9.5(TouchDesigner内部)

TouchDesignerはPythonを使用できますのでPythonはTouchDesigner内部のバージョンに依存します。2022は3.9.5みたいですが[1]、それ以前だと確か3.7あたりだったと思います。

実装

ここから実装に移ります。

LINE Notifyのトークンを取得

何かLINEに通知を送りたいと考えたことがある人は使ったことがあると思います。以下のリンクにアクセスしてLINEにログインし、アクセストークンを作成します。

https://notify-bot.line.me/ja/

ログインしたらマイページからトークンを発行します。トークンを発行するから発行することが出来ます。
一番上に表示されるトークン名を記入してください。というところに好きな名前を付けます。ここで例えばMacと入力すると以下のようになります。

その次にLINE Notifyからの通知を受ける場所を設定します。1:1でLINE Notifyから通知を受け取るグループのいずれかを選択できます。1:1を選択すれば、LINE Notifyという名前のチャットルームに通知が来ます。ただし1:1だと複数のトークンが同じチャットに合わさってしまうので、それが嫌な場合はグループでも通知を受け取ることができるのでそちらにしたほうがいいかもしれません。プロジェクトごとに管理がしやすいかと思います。

発行するをクリックすると発行されます。トークンが画面に現れたらコピーしておきましょう。ポップアップを閉じてしまうと二度と表示されなくなります。

これでひとまずトークンの取得は終わりです。

TouchDesigner

ここからはTouchDesignerに移ります。LINE Notifyのトークンを発行したのですぐに使いたい気持ちはわかりますがやるべきことがあります。それは外部ライブラリの参照です。

外部ライブラリの参照

TouchDesignerでは外部ライブラリをインストールすることができません。しかしターミナル等でインストールしたライブラリが格納されている場所をTouchDesignerに参照することで外部ライブラリを使用することが出来ます。ライブラリが保存されている場所を確認するのにpip showを使用します。

pip show [ライブラリ名]

このコマンドを実行し、現れた結果の中にあるlocationをコピーしておきます。

TouchDesignerに移り、Touchdesigner > Settingsもしくは⌘ + ,で設定画面を表示します。
その中にある、Add External Python to Search Pathにチェックを入れ、すぐ下のPython 64-bit Module Pathに先ほどpip showで確認したlocationのパスを入力します。

これでTouchDesignerで外部ライブラリ(外部モジュール)を使用することが出来ます。

コード

基本的にはLINE Notify Pythonと調べれば出てくるコードを使用することが出来ます。私が見つけたのはrequestsライブラリを使用したコードですので事前にrequestsをインストールしておきます。

pip install requests

TouchDesignerでText DATを作成し、その中に記述していきます。

Text DAT
# me - this DAT
import requests

# LINE Notify トークン
token = 'your_LINE_TOKEN'

def sendLineNotify(message):
    url = 'https://notify-api.line.me/api/notify'
    headers = {
        'Authorization': 'Bearer {}'.format(token)
    }
    data = {'message': message}
    response = requests.post(url, headers=headers, data=data)
    print(response.text)

これで使用できる形になりました。

使用

実際にどのように使用するか解説します。Text DATに記述したsendLineNotify関数を呼び出して使用します。

例えばWebSocket DATが接続されたら通知をするとしたい場合は以下のようになります。

websocket1_callbacks
onConnected():
    op('text1').module.sendLineNotify("好きな文章にしてください")

Text DAT(初期名:text1)のsendLineNotifyという関数を呼び出す、というような処理になっています。

text1という名前は実際の環境に合わせて変更してください。わかりやすい名前がいいと思います。

Text DATのように外部にLINEに通知する機能を書いておけばop('text1').module.sendLineNotify("")を好きな場所に設置し、""の中に送りたい文章を書けば利用できるので非常に便利かと思います。

まとめ

このような手順でTouchDesignerからLINEに通知を送ることが出来ます。私はまだプログラミングに関しては未熟なので様々な不手際や改善点があるかと思いますが大目にご了承願います。最後までお読みいただきありがとうございました。ご参考になれば幸いです。

参考文献

脚注
  1. https://derivative.ca/community-post/2022-official-update/66222 ↩︎

Discussion