Poe Platform release phiên bản iOS và Web chứa kha khá bot trên Platform của họ, bạn có thể vào https://poe.com/ để thử tải nghiệm chúng
nhờ Poe, bạn không cần phải tốn $1 để có thể tạo tài khoản trên https://chat.openai.com/ để trải nghiệm nữa.
Poe chỉ mới release cho iOS và web cho nên phận Android như mình phải lên web để sử dụng, để tối ưu việc đó, mình đã build 1 con bot Telegram giúp mình dễ dàng sử dụng nó.
Lấy API của Poe
Bật DevTools, chuyển sang tab Network, thực hiện gửi 1 tin nhắn, ở đây mình sẽ gửi tin nhắn có nội dụng là “Hello”, sẽ thấy được 1 request được gửi lên. Nhìn vào header thì Poe đang sử dụng GraphQL cho hệ thống. Vậy là chúng ta đã có API dùng để send message rồi ^.^
Bấm vào tab Payload, chúng ta sẽ thấy được param được gửi lên server là gì
nhìn vào chỗ variables, chúng ta để ý tới 3 key: bot, chatId và query
- bot: có thể là tên của con bot, mình đoán vậy: chinchilla
- chatId: id của chat: 1029826
- query: là message khi chat
Như vậy là đã xong phần API gửi tin nhắn, tiếp theo là cần API dùng để fetch nội dung tin nhắn.
Để tìm được API fetch nội dung tin nhắn, mình đã kéo lên để đọc tin nhắn cũ
ở request params gửi lên server, có 3 key cần chú ý:
- count: số lượng tin nhắn muốn lấy về
- cursor: con trỏ để query nội dung tiếp theo
- id: với kinh nghiệm làm reverse của mình, mình đã nhận ra đây là chuỗi được encode dưới dạng base64, thực hiện decode thử đoạn chuỗi trên được “Chat:1029826” vậy suy ra id là base64Encode(
Chat:${chatId}
) với chatId ở API send message.
Tiếp theo chúng ta cần phân tích response của api fetch messsage
Như vậy, danh sách tin nhắn sẽ nằm ở data.node.messagesConnection.edges, và có 3 key cần chú ý:
- text: nội dung message.
- author: ai là người gửi. Nếu tin nhắn là của bot sẽ có giá trị là bot name của nó, ở đây là: chinchilla, và nếu là người là human.
- state: trạng thái của message. Bot trả lời xong thì state = complete
Code
Các bạn clone repo này về rồi bắt đầu start nhé: https://github.com/whoant/chatgpt-bot
Setup
Bot chat mà không on 24/24 thì điều đó trở nên vô nghĩa, mình sẽ sử dụng https://fly.io/ để deploy con bot này lên. Fly.io free nên các bạn dễ dàng sử dụng, các bạn tiến hành tạo tài khoản và thực hiện install flyctl nhé
Cần 5 env variable để bot hoạt động được nhé
- POE_FORMKEY: sẽ lấy ở
bạn kéo xuống phần headers của bất kì API nào của Poe là sẽ thấy đươc key: poe-formkey
- POE_COOKIE: cách lấy tương tự như POE_FORMKEY, ở đây sẽ là lấy value của key là cookie
- POE_CHATID: cách lấy ở trên chỗ API send message, ở đây của mình sẽ là 1029826
- POE_BOT: cách lấy ở trên chỗ API send message, ở đây của mình sẽ là chinchilla
- TELEGRAM_BOT_TOKEN: bot token, các bạn tham khảo ở link này nhé https://cellphones.com.vn/sforum/cach-tao-bot-telegram-chi-trong-vong-mot-not-nhac
Các bạn tiến hành update ở file fly.toml
với những thông tin mình đã nói ở trên
Deploy
Gõ câu lệnh: flyctl launch
Các bạn setup như hình ở dưới nhé
Chỉ cần đổi tên whoant-bot thành tên bot của bạn là được và ấn Enter để nó bắt đầu deploy.
Đợi ra được như hình ở trên là đã thành công
Các bạn có thể lên Telegram search @whoant1_gpt_bot để trải nghiệm nhé