An application for Knowledge Integration by grails/groovy. Now only a Chat Microservice with groovy chatbot system.
This is a Chat Application builded by Grails Ver.3.2.
-
Chatbot by groovy language.
-
Now only embedded one. It will be connected with other microservices of bots.
-
Displays Spring Boot Actuator info / health / metrics of this Chat Server.
-
-
Accepts Github webhooks.
-
Now tested by Gitbucket’s webhooks.
-
Payload URL (ex. http://localhost:8080/chat/webhook/) with Content type "application/x-www-form-urlencoded".
-
-
Crawls Feeds of Atom / RSS / RDF. If updated, sends them to selected Chat Room.
-
Calls Jenkins to build Pipeline.
-
User Icon (Identicon) by Jdenticon.
-
Chat Rooms.
-
Chat log display by selecting a day on Calendar.
この図の矢印は、情報の流れを示しています。
(1) いわゆるチャットによるコミュニケーション。必要に応じて ChatRoomの作成、削除を行ないます。
(2) プロジェクトで使用しているレポジトリ(GitHub, GitLab, GitBucket)の変更や、 Pull Requestの通知、Issueの追加 / 削除などが、WebHookによりチャットとして表示します。
(3) Jenkinsに定義された Pipelineの実行を、チャットにより指示します。
(4) 社内に乱立している Redmineプロジェクトの活動状況や、世界中の Blogや NEWSの情報、 GitHubでの開発者の Public Activity、Jenkinsによるビルド状況などについて、 変化が随時チャットとして時系列で表示します。
これらの活動を、発生順に、時系列に並べられてチャットとして表示します。 適宜、ChatRoomを作成して振り分けることで、分類し、見通しを良くします。
Download gki-chat-1.0.10.jar
from
releases
link, then
$ java -jar gki-chat-1.0.10.jar
And access http://localhost:8080/chat/index from your Browser.
If you want to change port number(ex. 8081), then
$ java -jar gki-chat-1.0.10.jar --server.port=8081
ブラウザで http://localhost:8080/chat/index にアクセスします。 最初のアクセスであれば、以下の様に表示されます。
まず「Your Name」フィールドに名前を記入します。
それから Tabキーまたはマウスにより、
「Chat Message」フィールドにフォーカスを移動します。
これにより、次の様にメッセージが表示されます。
(このメッセージは、新規のユーザが接続したときか、
hello
コマンドを送信したときに表示されます。
そのユーザにのみ表示され、他のユーザには見えません。
メッセージの永続化(詳細は後述)もされません。)
「gkibot」は、組み込みの Chatbotです。このチャットシステムを利用するための案内役です。 表示されるコマンドは、その時点で利用できるものが表示されます。
チャットのメッセージは、以下の様に「Identicon」、「ユーザ名」、「タイムスタンプ」に 続いて表示されます。同じユーザのメッセージが続く場合は、これらは一度だけ表示されます。
「Identicon」は、ユーザを視覚的に識別するためのアイコンです。 「ユーザ名」の文字列から生成されるため、 同じユーザ名であれば同じ Identiconが表示されます。
「Your Name」フィールドに記入した名前は、 「Users in this Chat Room」テーブルに表示されます。
このテーブルには、この Chat Roomにいるユーザの一覧が表示されます。
このチャットサーバに接続しているすべてのユーザを知りたい場合は、
users
コマンドを実行してください。
「OnLine」表示は、サーバとの接続が切れると、以下の様に「OffLine」と表示されます。
一時的に通信が切れただけであれば、ブラウザによるページのリロードにより 「OnLine」に戻る場合があります。 それでも「OffLine」のままであれば、サーバの管理者に連絡してください。
「Chat Message」フィールドに文言を入力し、Returnキーを押すことで、 今いる Chat Roomにメッセージを送信します。 そのメッセージは、その Chat Roomにいるユーザに送信されます。
メッセージの内容がコマンドの形式に一致した場合、 コマンドとして実行されます。
メッセージは基本的に永続化(データベースに記録)されます。 ただし、以下の場合は永続化されません。
-
コマンドの応答メッセージで、そのユーザにのみ意味がある場合。
hello
/users
/info
/health
/metrics
など、 それを実行したときのユーザにのみ意味がある応答メッセージは、 永続化されません。 他のユーザにも表示されません。 -
コマンドの実行がエラーにより失敗した場合のエラー返信メッセージ。 そのコマンドを実行したユーザにはエラーメッセージが返信されますが、 そのエラーの返信メッセージは永続化されません。 他のユーザにも表示されません。
また、メッセージの内容が URL(http:// または https:// ではじまる文字列)に一致した場合、 それはリンクとして表示されます。
makeChatRoom
コマンドを使用します。
コマンドに続いて、作成したい Chat Roomの名前を記載します。
その名前にスペースを含めることはできません。
コマンドの実行が成功すれば、 以下のようにコンボボックスに Chat Roomが追加された一覧として表示されます。
このコンボボックスで Chat Roomを選択することで、 利用する Chat Roomを変更できます。
基本的な手順は以下です。
-
WebHookを表示する Chat Roomを作成します(必要に応じて)。
-
WebHookを表示する Chat Roomに移動し、利用する WebHookを登録します。
-
GibHub / GitLab / GitBucket等で、WebHookの設定を行ないます。
ここでは作成した Chat Roomに移動後の手順を説明します。
addHook
コマンドを使用します。
使用方法は、 hello
コマンドか、 addHook
とのみ入力することで表示されます。
[]
内の入力は必須ではありません。
ここでは localhostの GitBucketサーバと連携するための設定を例に説明します。
以下のように addHook
コマンドを実行することで、
この Chat Roomに WebHookのメッセージが表示されるようになります。
次に、GitBucket側の設定を行ないます。 以下のように、「Setting」メニューの「Service Hooks」タブを選択します。 新規の登録であれば、右下の「Add webhook」ボタンを押下します。
以下のように、それぞれの項目に記入し、「Add webhook」ボタンを押下します。
GitBucketのレポジトリに Pushされた場合には、以下のように表示されます。
基本的な手順は以下です。
-
Feedを表示する Chat Roomを作成します(必要に応じて)。
-
Feedを表示する Chat Roomに移動し、利用する Feedを登録します。
ここでは作成した Chat Roomに移動後の手順を説明します。
addFeed
コマンドを使用します。
使用方法は、 hello
コマンドか、 addFeed
とのみ入力することで表示されます。
[]
内の入力は必須ではありません。
ここでは、Springの Blogを登録します。
addFeed
コマンドの記述に問題なければ、gkibotから登録したとの応答があります。
URLが適切であれば、1分以内に、最初の Feedの表示が登録した Feed名によりされます。
最新の Feedが 1件表示されます。 タイムスタンプは、Feedに付加されていたものです。 以後は、これよりも新しい Feedが追加されたときに、追加分が随時表示されます。 この追加の確認は、一定間隔で実行されます。その間隔はデフォルトでは 30分です。
この間隔を変更する場合は、以下のようにコマンドを実行します。
addFeed SpringBlog https://spring.io/blog.atom FeedsTimeline 120
間隔時間(Interval)の単位は分です。
Redmineのプロジェクトを対象とする場合は、以下のように、「活動」タブを選択します。
次に、右側に表示される、Feedに含める項目を選択し、「適用」ボタンを押します。
次に、右下の「Atom」のリンクを右マウスボタンにより URLをコピーします。
最後に、同様に登録を行ないます。
Jenkin Jobとの連携は以下ができます。
-
Jenkins Jobにビルドの実行を依頼する。
-
ビルドの結果を Feedとして(指定した) Chat Roomに表示する。
この連携のための設定は以下の手順になります。
-
Feedを表示する Chat Roomを作成します(必要に応じて)。
-
Feedを表示する Chat Roomに移動し、Jenkins Jobのビルド実行結果を Feedとして登録します。
-
Jenkins Jobを登録します。
ここでは作成した Chat Roomに移動後の手順を説明します。
Jenkins Jobのビルド実行結果を Feedとして登録する場合は、
以下の「RSS全ビルド」の URLを右マウスボタンによりコピーし、
addFeed
コマンドにより、他の Feedと同様に登録します。
Jenkins Jobの登録には、 addJenkins
コマンドを利用します。
使用方法は、 hello
コマンドか、 addJenkins
とのみ入力することで表示されます。
[]
内の入力は必須ではありません。
Jenkinsの Web画面で、 それぞれの Jenkins Jobの状況が表示される URLを以下のように登録します。
ビルドの実行の依頼では、この URLに buildが付加された以下の URLが使用されます。
http://localhost:8180/job/gki/build
実際に設定とビルドを実行した例を以下に示します。
まず、Jenkins Jobのビルド実行結果の Feedの登録を行ないます。 Feedの確認間隔をデフォルトの 30分より短い 10分として設定しています。
次に Jenkins Jobを登録します。 Jenkinsの設定により認証が必要となっているため、 ユーザ名とパスワードも設定しています。
続いて build
コマンドにより Jobの実行を依頼し、
その結果が Feedとして表示されます。
以下の URLにアクセスしてください。
http://localhost:8080/chat/export
ブラウザでアクセスした場合、 「ChatService.conf」というファイル名で保存されます。
curl等でアクセスした場合も、このファイル名で保存してください。
Since Grails Ver.3.1.7,
at the Service Class which has a method with @Scheduled Annotation,
lazyInit
should be disabled.
class xxxx {
static lazyInit = false
...
@Scheduled(fixedRate=10000L)
void yyyy() {
...
}
}
-
Many thanks to Grails and it’s ecosystem.
-
Very good testing samples for Grails, Spring Boot.
-
Many thanks to Jdenticon.
-
Ver.1.0.10, Fix User List and cache MessageNumber. : 2017-01-13
-
Ver.1.0.9, Update support of MessageNumberBadge on each day, add reply selection. : 2017-01-12
-
Ver.1.0.8, First support of MessageNumberBadge on each day. : 2017-01-10
-
Ver.1.0.7, Not to notify by self and old messages. : 2016-12-21
-
Ver.1.0.6, Add first support for the Web Notification. : 2016-12-17
-
Ver.1.0.5, Update Grails to Ver.3.2.3 with fix #32. : 2016-12-03
-
Ver.1.0.4, Downgrade Grails to Ver.3.1.14 because of #32. : 2016-12-03
-
Ver.1.0.3, Update Grails to Ver.3.2.2. : 2016-11-06
-
Ver.1.0.2, Update Grails to Ver.3.1.12. Restructure folders.: 2016-10-10
-
Ver.1.0.1, Optimize Icon Image download. : 2016-08-16
-
Ver.1.0.0, Fix Icon Image upload, add temporary input display. : 2016-08-14
-
Ver.1.0.0-RC2, Update Icon Image update. : 2016-08-11
-
Ver.1.0.0-RC1, Update Grails to Ver.3.1.10, close #5. : 2016-08-09
-
Ver.0.1.17, Update Grails to Ver.3.1.9 and Gorm to Ver.5.0.10, close #21. : 2016-07-03
-
Ver.0.1.16, Use style "word-break: break-all;" to Scaffolding table. : 2016-06-20
-
Ver.0.1.15, Minor improvements. : 2016-06-14
-
Ver.0.1.14, Fix #4, #20. : 2016-06-12
-
Ver.0.1.13, Fix #17. : 2016-06-08
-
Ver.0.1.12, Fix #13, #14, #15. : 2016-06-05
-
Ver.0.1.11, Upgrade to Grails 3.1.8, fix #11. : 2016-06-01
-
Ver.0.1.10, Fix export, add import Configuration with ConfigSlurper. fix #9, #10. : 2016-05-30
-
Ver.0.1.9, Upgrade to Grails 3.1.7, add feature of export Configuration. : 2016-05-29
-
Ver.0.1.8, Fix #6, #8. : 2016-05-24
-
Ver.0.1.7, View only last one item when feed added. : 2016-05-23
-
Ver.0.1.6, Add initial FeedCrawler. : 2016-05-22
-
Ver.0.1.5, Add initial WebHook Configuration. : 2016-05-19
-
Ver.0.1.4, Add delay between messages of list. : 2016-05-15
-
Ver.0.1.3, Add link to Issue/Pull Request No. of Chat Message. : 2016-05-13
-
Ver.0.1.2, Update to display Spring Boot Actuator info/health/metrics, and accept Github webhooks. : 2016-05-12
-
Ver.0.1.1, Add log viewer by selected date and
users
command. : 2016-05-10 -
Ver.0.1.0, Initial release. : 2016-05-09