Skip to content

Commit

Permalink
implement task feature (#27)
Browse files Browse the repository at this point in the history
  • Loading branch information
okuzawats authored Oct 23, 2023
1 parent cda90b0 commit 4223437
Show file tree
Hide file tree
Showing 4 changed files with 76 additions and 12 deletions.
7 changes: 7 additions & 0 deletions .github/workflows/development.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,10 @@ jobs:
apiToken: ${{ secrets.API_KEY }}
roomId: ${{ secrets.ROOM_ID }}
message: ${{ steps.arguments.outputs.message }}
- uses: ./
with:
apiToken: ${{ secrets.API_KEY }}
roomId: ${{ secrets.ROOM_ID }}
message: "you have to do this task!"
messageType: "task"
userIdsToAssignTask: ${{ secrets.USER_ID_1 }}
18 changes: 17 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,25 @@ Chatwork の Room にメッセージを送信する Action です。
以下のように使用します。

```yml
- uses: okuzawats/chatwork-messaging-action@v1.0 # またはコミットハッシュを使用してください。
- uses: okuzawats/chatwork-messaging-action@v1.1 # またはコミットハッシュを使用してください。
with:
apiToken: ${{ secrets.API_KEY }} # Chatwork の API キーです。secrets の利用を推奨します。
roomId: ${{ secrets.ROOM_ID }} # Chatwork の Room ID です。secrets の利用を推奨します。
message: 'ここにメッセージを書きます。'
```
タスク機能にも対応しました(v1.1〜)。`messageType` と `userIdsToAssignTask` を追加してください。`userIdsToAssignTask` には複数IDを指定できます。カンマ区切りでユーザーIDを指定してください。

```yml
- uses: okuzawats/chatwork-messaging-action@v1.1 # またはコミットハッシュを使用してください。
with:
apiToken: ${{ secrets.API_KEY }} # Chatwork の API キーです。secrets の利用を推奨します。
roomId: ${{ secrets.ROOM_ID }} # Chatwork の Room ID です。secrets の利用を推奨します。
message: '牛乳を買う'
messageType: 'task'
userIdsToAssignTask: USER_ID
```

ワークフロー構文の書き方は、本リポジトリの `.github/workflows/` 内に格納してある、[example.yml](https://github.com/okuzawats/chatwork-messaging-action/blob/main/.github/workflows/example.yml)も参考にしてください。

## Chatwork の使い方
Expand All @@ -38,6 +50,10 @@ Chatwork の Room にメッセージを送信する Action です。

です。

### ユーザー ID

- 自分宛に返信した時に `aid=XXXXXXX` と表示される `XXXXXXX` の部分

### メッセージ記法

Chatwork のメッセージ記法については、以下を参照してください。
Expand Down
13 changes: 13 additions & 0 deletions action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,20 @@ inputs:
roomId:
required: true
description: 'Chatroom ID'
messageType:
description: 'Message type to send. default is message.'
type: choice
default: 'message'
required: false
options:
- message
- task
message:
required: true
description: 'Message to send'
userIdsToAssignTask:
required: false
description: 'User Id to be assigned to the task. Or you can specify multiple users, separated by commas. example 1,3,5'
runs:
using: 'composite'
steps:
Expand All @@ -31,3 +42,5 @@ runs:
API_TOKEN: ${{ inputs.apiToken }}
ROOM_ID: ${{ inputs.roomId }}
MESSAGE: ${{ inputs.message }}
MESSAGE_TYPE: ${{ inputs.messageType }}
USER_IDS_TO_ASSIGN_TASK: ${{ inputs.userIdsToAssignTask }}
50 changes: 39 additions & 11 deletions main.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,52 @@
params = {
token: ENV['API_TOKEN'],
room_id: ENV['ROOM_ID'],
message: ENV['MESSAGE'].delete_prefix('"').delete_suffix('"')
message: ENV['MESSAGE'].delete_prefix('"').delete_suffix('"'),
message_type: ENV['MESSAGE_TYPE'],
user_ids_to_assign_task: ENV['USER_IDS_TO_ASSIGN_TASK']
}

# message type must be message or task.
type = params[:message_type]
valid_types = ["message", "task"]
unless valid_types.include?(type)
raise StandardError.new("type should be message or task.")
end

if params[:message].empty?
raise StandardError.new("empty message is not allowed.")
end

uri = URI.parse("https://api.chatwork.com/v2/rooms/#{params[:room_id]}/messages")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
if type == "message"
uri = URI.parse("https://api.chatwork.com/v2/rooms/#{params[:room_id]}/messages")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true

body = "body=#{params[:message]}"
headers = { "X-ChatWorkToken" => "#{params[:token]}" }

response = http.post(uri.path, body, headers)

if response.code == '200'
puts response.body
else
raise StandardError.new("action failed! #{response.body}")
end
end

if type == "task"
uri = URI.parse("https://api.chatwork.com/v2/rooms/#{params[:room_id]}/tasks")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true

body = "body=#{params[:message]}"
headers = { "X-ChatWorkToken" => "#{params[:token]}" }
body = "body=#{params[:message]}&to_ids=#{params[:user_ids_to_assign_task]}"
headers = { "X-ChatWorkToken" => "#{params[:token]}" }

response = http.post(uri.path, body, headers)
response = http.post(uri.path, body, headers)

if response.code == '200' && response.body.match(/^{"message_id":"[0-9]+"}/)
puts response.body
else
raise StandardError.new("action failed! #{response.body}")
if response.code == '200'
puts response.body
else
raise StandardError.new("action failed! #{response.body}")
end
end

0 comments on commit 4223437

Please sign in to comment.