+1

Tôi đã xây dựng ChatGPT bot trên Telegram dựa trên Poe Platform như thế nào ?

Mayfest2023

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, chatIdquery

  • 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 ở

ezgif-1-6a41f01c0a.jpg

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

ezgif-1-2dfd084f21.jpg

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é

ezgif-1-864bc1f8e9.jpg

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.

ezgif-1-043a55d4ae.jpg

Đợ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é


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí