20/01/2019, 18:35

Giải pháp hết box ChatWork dành cho người… nghèo

Người viết: Mạnh Vũ 1. Bài toán Những ai đang dùng ChatWork (mà không phải premium) đều sẽ gặp phải 1 vấn đề: Bạn chỉ được phép tham gia tối đa 14 chat box. Ngày xưa, khi full box, chúng ta có thể thoát 1 box để tham gia box khác. Tuy nhiên với sự thay đổi gần đây thì việc ...

Người viết: Mạnh Vũ

1. Bài toán

Những ai đang dùng ChatWork (mà không phải premium) đều sẽ gặp phải 1 vấn đề: Bạn chỉ được phép tham gia tối đa 14 chat box. Ngày xưa, khi full box, chúng ta có thể thoát 1 box để tham gia box khác. Tuy nhiên với sự thay đổi gần đây thì việc thoát box sẽ không làm giảm số lượng box chat đã tham gia của bạn, khiến cho những người dùng tài khoản free rất chi là đau khổ khi đã lỡ join nhiều box. Một giải pháp được đưa ra đó là lập 1 tài khoản khác để có thể tiếp tục sử dụng, nhưng như thế sẽ phải check tin nhắn ở 2 tài khoản. Bài viết này sẽ giúp bạn set up 1 con bot đơn giản, forward các tin nhắn từ 1 tài khoản sang tài khoản còn lại.

2. Cách thức hoạt động

Tech stack

  • Ruby on Rails – framwork web
  • gem chatwork – gem này cung cấp các phương thức để thao tác với ChatWork, nhưng chúng ta cũng chỉ cần phương thức gửi tin nhắn đi thôi, bạn có thể đọc docs tại đây
  • ChatWork API – api_token ta dùng để cài đặt khi sử dụng gem chatwork
  • ChatWork Webhook – sẽ gửi một request đến 1 đường dẫn đã cài đặt khi có một event xảy ra
  • Heroku – đương nhiên dùng để deploy app lên rồi ✌
  • Pingdom – chắc hẳn ai cũng biết app heroku freee sau một thời gian không hoạt động thì sẽ được sleep, sẽ hoạt động lại khi có request đến app đó. Pingdom sẽ liên tục “ping” đến app heroku của chúng ta, ngăn nó vào trạng thái sleep :v

Mô tả cách hoạt động

3. Cài đặt

2.2. Hướng dẫn

Tạo app Ruby on Rails

Cái này thì đơn giản rồi, ai cũng biết, ta chạy lệnh sau:

Thêm vào Gemfile gem "chatwork" và chạy bundle install

Lấy API token

Tại phần profile (góc trên cùng bên phải), ta chọn API Setting

Trang API Setting hiện ra, ta nhập mật khẩu và nhấn Display để có được API Token, ta lưu chuỗi này lại (để lần sau đỡ phải mở lại trang này ✌ )

Và ta phải làm quá trình này 2 lần, mỗi lần cho 1 tài khoản

Tạo controller

Ta tiến hành tạo 1 controller rails g controller cws

- - - - - - - - - - - - - - - - - - - - Được tài trợ - - - - - - - - - - - - - - - - - - - -

Tại controller Cws, ta cài đặt như sau:

Thêm vào routes.rb của app:

Giải thích 1 chút:

Sẽ cài đặt api_key cho ứng dụng, api key này cho phép chúng ta có quyền để thao tác với tài khoản chatwork có api key đó.

Sẽ cài đặt api key thành api token của tài khoản phụ

để lấy id của box chat mà bạn muốn lấy tin nhắn và nội dung tin nhắn

để lấy tên của room (box chat)

đây sẽ xác định room mà tài khoản phụ gửi tin nhắn đến (chính là room private của acc chính và acc phụ) và nội dung của tin nhắn gửi về cho tài khoản chính. Dãy số sau To là id của người nhận, để người đó nhận được thông báo

cập nhật token thành token của tài khoản bot để ta có thể gửi tin nhắn từ tài khoản này

Thực ra đoạn này không cần thiết lắm, nếu bạn muốn tài khoản phụ gửi tin nhắn trực tiếp cho tài khoản chính, nhưng mình sẽ dùng 1 tài khoản thứ 3 để gửi, đặt tên nó là con bot cho xịn sò

0