ガラケーの母とNextcloud Talkでチャットできるようにしてみた

nextcloud

約 8 分で読めます。



私の母はガラケーで、LINEやSNSを全く使ったことがなく、

母

いまのケータイで不満はないよ。

それに最近スマホを狙った詐欺みたいなニュースもあるし。

そんなの絶対いや。

スマホだと大きすぎてポケットに入らないし、とにかく今のままでいいよ。

ということで、スマホもSNSも全くやっていませんし、これからも予定なし。

一方我々のような比較的スマホを使いこなしている世代からすると、

yatch
yatch

今どきメールなんて面倒なんだよな。

いちいち過去のメール一覧から探して返信とかやってられない。

会話の履歴を追うのもだるいし、LINEとかでコミュニケーションしたいわ。

と思ってしまうもので。

ただ、母にスマホを使ってもらうのは、何度も説得したけど無理でした。
俗に言うデジタルデバイドですが、気持ちは理解できました。


ということで、

・母はガラケーでメールを使う
・自分はLINEみたいな会話をする

というシステムを作ってみました。

使ったのはNextcloud Talk
こんな風に会話ができています。



一方で母から見ると、以下のようにメールでのやり取りに見えている。

システム構成

システム構成は以下の通りです。
  母からyatchにメッセージ送信
  yatchから母にメール送信

すでに存在しているWebサービスやAPIを組合せて作りました。
プログラムはほとんど書いていません。

めっちゃ楽でした。

母からメール送信時

もともと私は母とのメールやり取りにGmailを使っていました。
そこにZapierでの連携を追加しています。

具体的には以下画像の通り。
2. Custom Requestはプレミアム会員になる必要があります。月額19.99USD。
これを安いと思うか高いと思うかは各人次第ですが、私は払う価値があると判断しました。



トリガー側はこう。
母のアドレスからメールが来たことをトリガーにしています。



アクションはこう。
Nextcloud TalkはREST APIで投稿などができるようになっていますので、それを活用。



Nextcloud TalkにHTTP POSTで各種操作するAPIはこちらで公開されています。

Nextcloud Talk API documentation
None



以下は自分が躓いたところなので、気をつけてください。

A. ユーザー名とパスワードはBasic Authで指定する
 二要素認証を有効にしている場合はアプリ毎のパスワードで対処
B. Content-Type: application/x-www-form-urlencoded を指定する
C. OCS-APIRequest: true を指定する



A. の「二要素認証を有効にしている場合はアプリ毎のパスワードで対処」はこの記事で説明していますので、参考にしてください。

母にメッセージ送信時

こちらではNextcloud Talkの特殊機能であるCommandsを使っています。
 執筆時点ではBeta

Commands (deprecated) - Nextcloud Talk API documentation



メッセージ投稿時に
 /m Hello
など、
 スラッシュ+ASCII文字列での識別子+スペース+メッセージ
と入力することで、サーバーOS上でコマンドを実行させられる機能です。

私は以下のように設定しました。
gmail.pyって名前が変だけど、、、まあいいか。

/m メッセージ でpython3 gmail.pyを実行
 例: /m おはよう!
gmail.pyでは以下を実行
 A. メッセージを本文に指定してGmailを送信
  送信元:自分 送信先:母
 B. Nextcloud Talkに投稿
  投稿先:母とのチャットルーム
  投稿者:自分



occコマンドで見たときは以下です。
responseを0にし、Commands実行自体をチャット画面に表示させないようにしています。

sudo -u www-data php occ talk:command:list 
The process control (PCNTL) extensions are required in case you want to interrupt long running commands - see https://www.php.net/manual/en/book.pcntl.php
The current PHP memory limit is below the recommended value of 512MB.
Response values: 0 - No one,   1 - User,       2 - All
Enabled values:  0 - Disabled, 1 - Moderators, 2 - Users, 3 - Guests

+----+-----+-------+---------+------------------------------------------------------+----------+---------+
| id | app | name  | command | script                                               | response | enabled |
+----+-----+-------+---------+------------------------------------------------------+----------+---------+
| 1  |     | talk  | help    | help                                                 | 1        | 3       |
| 4  |     | gmail | m       | python3 /var/www/nextcloud_data/gmail.py {ARGUMENTS} | 0        | 3       |
+----+-----+-------+---------+------------------------------------------------------+----------+---------+



A. のPythonからGmailを送る方法は以下の記事を参考にさせていただきました。

Gmail APIとPythonを使ってメール送信を自動化する方法
Gmail APIを使えばGmailの機能を自動で操作できます。さまざまな機能の中でも本記事ではメール送信を自動化する方法を解説。Pythonで簡単なプログラムを作り、ワンクリックでメールを送れるようになります。



ASCII文字、日本語、森鷗外などUnicode、絵文字、改行、を一通り試したところ、特に不具合は出ていないので、ひとまず運用に踏み切りました。

終わりに

いかがでしたか。

似たような課題でお悩みの方は意外といるのでは?

この記事を書いた人

組込ソフト歴15年の外資系エンジニア。
前職で組込Linuxを使った商品設計/品質確保の業務に従事。
Raspberry Piが好き。
株式投資で年50万円を稼ぐ。
妻は香港人(国際結婚)。

Please follow me
nextcloudTalk
Please follow me

Comments

タイトルとURLをコピーしました