Mục lục:

CovBot - một Chatbot dựa trên WhatsApp cho COVID 19 Thông tin và hơn thế nữa: 7 bước
CovBot - một Chatbot dựa trên WhatsApp cho COVID 19 Thông tin và hơn thế nữa: 7 bước

Video: CovBot - một Chatbot dựa trên WhatsApp cho COVID 19 Thông tin và hơn thế nữa: 7 bước

Video: CovBot - một Chatbot dựa trên WhatsApp cho COVID 19 Thông tin và hơn thế nữa: 7 bước
Video: Quy trình giải trình tự gen virus SARS-CoV-2 của Việt Nam 2024, Tháng mười một
Anonim
Image
Image
Tạo tài khoản Twilio
Tạo tài khoản Twilio

CoVbot là một chatbot dựa trên Whatsapp đơn giản và trực quan. Tính năng chính của bot là:

Nó có thể cung cấp cho bạn trạng thái mới nhất của COVID-19 ở quốc gia bạn chọn một cách đơn giản và trực quan.

Ngoài ra, bot có thể đề xuất các hoạt động thú vị để làm TẠI NHÀ như:

  1. Gợi ý Phim - Một bộ phim đáng xem trong danh sách Top 10 phim, với nội dung tổng quan ngắn gọn về cốt truyện và thời lượng. Vì danh sách này không được mã hóa cứng trong phần mềm nên sẽ luôn cung cấp cho bạn các bản cập nhật mới nhất dựa trên xu hướng hiện tại.
  2. Đề xuất chương trình truyền hình - Một chương trình truyền hình để xem từ các chương trình truyền hình phổ biến nhất, với tổng quan ngắn gọn về cốt truyện và xếp hạng. Vì danh sách này không được mã hóa cứng trong phần mềm nên sẽ luôn cung cấp cho bạn các bản cập nhật mới nhất dựa trên xu hướng hiện tại.
  3. Gợi ý Sách - Một cuốn sách nên đọc từ Danh sách Sách Top 10, với lời giới thiệu và hình ảnh bìa của cuốn sách.
  4. Tập luyện hàng ngày - Đây là video dựa trên lịch trình tập luyện trong 7 ngày do phòng tập thể dục CRANK cung cấp trên Tài khoản Instagram của họ.

Nếu bạn cảm thấy thích thú với Tài liệu hướng dẫn này, vui lòng xem xét bỏ phiếu cho nó trong Cuộc thi Tác giả Mục đầu tiên. (và vâng, đây là hướng dẫn đầu tiên của tôi vì vậy nếu có điều gì không rõ ràng hoặc cần giải thích thêm, vui lòng cho tôi biết trong phần bình luận và tôi có thể giúp bạn:)

Quân nhu

Dự án này chỉ là dự án dựa trên phần mềm, vì vậy bất kỳ ai làm theo hướng dẫn này với máy tính xách tay / máy tính để bàn / macOS / Linux và internet đều có thể hoàn thành dự án này. Tôi cũng sẽ bao gồm một phần chi tiết ở cuối để giải thích mã / quy trình chi tiết hơn cho những người có một số kinh nghiệm lập trình, Xin lưu ý rằng điều này không cần thiết để hoàn thành dự án

Mức độ khó khăn của dự án:

Không dễ nhưng cũng không khó

Phần cứng chúng tôi sẽ sử dụng:

  • Máy tính xách tay / máy tính để bàn chạy Windows / macOS / Linux.
  • Điện thoại di động có cài đặt WhatsApp Messenger

Phần mềm chúng tôi sẽ sử dụng:

  1. Ngôn ngữ lập trình Python
  2. ngrok - là một công cụ được sử dụng để cho phép chúng tôi truy cập vào máy chủ của mình từ bên ngoài mạng của chúng tôi
  3. Trình chỉnh sửa bạn chọn: (ví dụ: Notepad ++, Sublime Text, Vim, v.v.)

Bước 1: Cài đặt phần mềm cần thiết

Image
Image

Trong bước này, chúng tôi sẽ thực hiện như sau:

  1. Cài đặt Python> 3.6 và kiểm tra nó
  2. Cài đặt thư viện python bắt buộc
  3. Cài đặt ngrok

Nếu bạn đã cài đặt cả hai ứng dụng, bạn có thể bỏ qua bước này

Cài đặt Python:

Toàn bộ cơ sở mã phụ trợ / máy chủ cho dự án này được viết bằng Python 3.6. Do đó, để chạy các ứng dụng của mình, chúng ta cần cài đặt Python> 3.6 trên máy tính của mình. Làm theo hướng dẫn của CoreySchafer về cách cài đặt python cho Windows và macOS

Bạn có thể kiểm tra mọi thứ đã được cài đặt chính xác chưa bằng cách nhập nội dung sau vào cmd / Terminal:

python -c 'print (f "Hello World")'

Nếu mọi thứ đã được cài đặt chính xác, thì Hello World sẽ được in trên màn hình. Nếu bạn gặp lỗi cú pháp không hợp lệ, thì bạn đã cài đặt sai phiên bản python. Cài đặt phiên bản python> = 3.6

Cài đặt các thư viện python được yêu cầu bằng cách sử dụng pip:

Chúng tôi sẽ sử dụng các thư viện python sau để làm cho phần mềm của chúng tôi hoạt động:

  1. Flask - Đây là khung cho máy chủ của chúng tôi
  2. Twilio - Thư viện này cung cấp một cách để python giao tiếp với WhatsApp
  3. Yêu cầu - Thư viện này được sử dụng để yêu cầu dữ liệu từ các API
  4. BeautifulSoup4 - Thư viện này được sử dụng để thu thập thông tin từ các trang web
  5. lxml - Thư viện này được sử dụng kết hợp với BeautifulSoup để trích xuất thông tin có liên quan từ một trang web

Để cài đặt các thư viện này, bạn có thể làm như sau:

Mở CMD / Terminal và gõ lệnh sau:

pip cài đặt bình, twilio, yêu cầu, beautifulsoup4, lxml

HOẶC

Tải xuống tệp tin request.txt và mở một thiết bị đầu cuối trong thư mục chứa tệp và nhập:

pip install -r request.txt

Cài đặt ngrok

ngrok cho phép bạn hiển thị máy chủ chạy trên máy cục bộ của bạn với internet. Chỉ cần cho ngrok biết máy chủ của bạn đang nghe trên cổng nào.

Làm theo hướng dẫn trên trang web ngrok để cài đặt ngrok cho hệ điều hành bạn đang sử dụng.

Mẹo: Bước 3 của hướng dẫn không liên quan đến dự án này nên có thể bỏ qua

Bước 2: Tạo tài khoản Twilio

Trong bước này, chúng tôi sẽ thực hiện như sau:

  1. Đăng ký tài khoản Twilio
  2. Giới thiệu nhanh về các phần hữu ích trên Bảng điều khiển của Twilio

Đăng ký:

Trong dự án này, chúng tôi sẽ sử dụng API Twilio Whatsapp để kết nối chương trình python của chúng tôi với Whatsapp. Để có thể sử dụng Twilio API, trước tiên chúng ta cần tạo một tài khoản trên trang web chính thức của Twilio. Đối với tài khoản dùng thử, Twilio cung cấp khoản tín dụng miễn phí $ 15 để chúng tôi sử dụng.

Giới thiệu nhanh:

Khi bạn đã tạo tài khoản, Các phần thú vị nhất của bảng điều khiển Twilio cho dự án này là:

Trang tổng quan - Từ trang tổng quan, bạn có thể thấy số tiền tín dụng còn lại, bạn có thể chỉnh sửa tên dự án của mình và thay đổi ngôn ngữ lập trình

Tiểu mục Whatsapp trong phần SMS có thể lập trình - Từ phần Whatsapp của bảng điều khiển, bạn có thể truy cập vào mã tham gia cho bot, số Whatsapp chúng tôi sẽ sử dụng trong dự án để nói chuyện với bot của chúng tôi và cũng như thiết lập webhook. Thông tin chi tiết về tất cả những điều này sẽ được mô tả trong các bước tiếp theo

Bước 3: Nhận Khóa API cho Dữ liệu COVID 19, Phim và Chương trình truyền hình

Nhận Khóa API cho Dữ liệu COVID 19, Phim và Chương trình truyền hình
Nhận Khóa API cho Dữ liệu COVID 19, Phim và Chương trình truyền hình
Nhận Khóa API cho Dữ liệu COVID 19, Phim và Chương trình truyền hình
Nhận Khóa API cho Dữ liệu COVID 19, Phim và Chương trình truyền hình

Khóa API hoặc khóa giao diện lập trình ứng dụng là mã được các ứng dụng máy tính chuyển vào. Sau đó, chương trình hoặc ứng dụng gọi API hoặc giao diện lập trình ứng dụng để xác định người dùng, nhà phát triển hoặc chương trình gọi đến một trang web.

Chúng tôi sử dụng một API để lấy thông tin về Trạng thái, Phim và Chương trình truyền hình mới nhất của COVID 19. Để truy cập API, bạn cần một khóa cá nhân đối với mỗi người dùng. Trong bước này, chúng ta sẽ nhận được các phím này

Nhận Khóa API cho Dữ liệu COVID 19:

  • Đăng nhập hoặc đăng ký tài khoản RapidAPI của bạn.
  • Sau đó, chuyển đến API COVID-19 của Gramzivi
  • Cuộn xuống phần "Tham số tiêu đề" của bảng điều khiển API.
  • Khóa API của bạn sẽ hiển thị trong trường “X-RapidAPI-Key”.

Nhận Khóa API cho phim và dữ liệu chương trình truyền hình:

  • Đăng nhập hoặc đăng ký tài khoản TMDB của bạn
  • Sau đó, hãy chuyển đến cài đặt của bạn - API
  • Cuộn xuống phần "API Key (v3 auth)"
  • Khóa API của bạn sẽ hiển thị bên dưới nó

Tạo tệp "config.py"

Bây giờ chúng tôi sẽ tạo một tệp config.py để lưu trữ các khóa API của chúng tôi. Chúng tôi tạo một tệp riêng cho những thứ này, vì khóa API là thông tin bí mật và nếu bạn chia sẻ dự án của mình, bạn không nên chia sẻ khóa API của mình.

  • Tạo một thư mục dự án mới
  • Bên trong thư mục mới tạo, tạo một tệp mới có tên "config.py"
  • Chỉnh sửa tệp này bằng trình chỉnh sửa bạn chọn (Sublime, Notepad ++) và sao chép và thay thế văn bản sau bằng thông tin liên quan có được ở bước trước:

session_key = "secret" # Điều này không an toàn.. nhưng chỉ để kiểm tra nó là được

quick_api_key = "" api_key = ""

Lưu các tập tin

Bước 4: Kết nối Python và Twilio qua Ngrok

Trong bước này, chúng tôi sẽ làm như sau:

  1. Tải xuống mã nguồn
  2. Thực thi chương trình và chuyển tiếp IP cục bộ đến một địa chỉ công cộng qua ngrok để chúng tôi có thể đưa ra yêu cầu đối với nó
  3. Định cấu hình tài khoản Twilio của chúng tôi để chuyển tiếp yêu cầu đến máy chủ của chúng tôi

Tải xuống mã nguồn cho bot:

Tải xuống tất cả tệp đính kèm trong thiết lập này vào thư mục dự án đã tạo ở bước cuối cùng.

Thực hiện chương trình:

Đi tới thư mục của mã nguồn trong CMD / terminal và thực hiện lệnh sau:

python server_main.py

Đảm bảo có "config.py" mà chúng tôi đã tạo ở bước trước, nếu không bạn sẽ gặp lỗi

Đầu ra phải là một cái gì đó như thế này:

* Đang cung cấp ứng dụng Flask "server_main" (tải chậm)

* Môi trường: sản xuất CẢNH BÁO: Đây là một máy chủ phát triển. Không sử dụng nó trong triển khai sản xuất. Thay vào đó, hãy sử dụng máy chủ WSGI sản xuất. * Chế độ gỡ lỗi: bật * Đang chạy trên https://127.0.0.1:5000/ (Nhấn CTRL + C để thoát) * Khởi động lại bằng stat * Trình gỡ lỗi đang hoạt động! * Mã PIN của trình gỡ lỗi: 740-257-236

Điều này có nghĩa là máy chủ của bạn đang chạy chính xác trên mạng cục bộ của bạn trên cổng 5000. Để làm cho máy chủ này có thể truy cập từ bên ngoài mạng cục bộ của bạn, chúng tôi sẽ sử dụng ngrok

Chuyển tiếp IP cục bộ đến một địa chỉ công cộng qua ngrok

Đi tới thư mục mà bạn đã tải xuống ngrok qua CMD / terminal và thực hiện lệnh sau:

ngrok http 5000

Đầu ra phải là một cái gì đó như thế này:

ngrok bởi @inconshreveable (Ctrl + C để thoát)

Trạng thái phiên trực tuyến Phiên hết hạn 7 giờ 59 phút Phiên bản 2.3.35 Khu vực Hoa Kỳ (chúng tôi) Giao diện web https://127.0.0.1:4040 Chuyển tiếp _https://d44c955749bf.ngrok.io_ -> _https:// localhost: 5000_ Chuyển tiếp _https://d44c955749bf.ngrok.io_ -> _https:// localhost: 5000_ Kết nối ttl opn rt1 rt5 p50 p90 0 0 0,00 0,00 0,00 0,00

Sao chép liên kết HTTP từ phần "Đang tải" (chỉ cho đến ngrok.io). (Tôi đã thêm dấu _ trong ví dụ này để tránh việc có thể chặn nó dưới dạng một liên kết)

Định cấu hình Twilio để sử dụng địa chỉ mới để chuyển tiếp yêu cầu máy chủ tới:

Bây giờ chúng tôi đã chuyển tiếp thành công máy chủ của mình để được truy cập công khai, chúng tôi cần định cấu hình Twilio để khi có yêu cầu bằng Twilio Whatsapp API, chúng tôi sẽ chuyển tiếp yêu cầu đến máy chủ của mình. Để làm điều này, chúng ta cần làm như sau:

  1. Đi tới phần Whatsapp trên Bảng điều khiển của Twilio
  2. Điều hướng đến phần phụ "Sanbox"
  3. Trong hộp văn bản "KHI CÓ TIN NHẮN", hãy dán liên kết HTTP từ ngrok được sao chép với phần mở rộng / sms (KHÔNG SAO CHÉP _ ở đầu và cuối):

_https://d44c955749bf.ngrok.io/sms_

Bây giờ mọi thứ cho chatbot đã được thiết lập. Trong bước tiếp theo, chúng tôi có thể kiểm tra xem mọi thứ có hoạt động chính xác hay không

Bước 5: Kiểm tra ứng dụng của chúng tôi

Kiểm tra ứng dụng của chúng tôi
Kiểm tra ứng dụng của chúng tôi
Kiểm tra ứng dụng của chúng tôi
Kiểm tra ứng dụng của chúng tôi
Kiểm tra ứng dụng của chúng tôi
Kiểm tra ứng dụng của chúng tôi

Trong bước này, chúng tôi sẽ làm như sau:

  1. Tham gia với bot của chúng tôi bằng mã truy cập
  2. Hãy thử ứng dụng của chúng tôi

Tham gia với bot của chúng tôi bằng mã truy cập

Trong dự án này, chúng tôi sẽ sử dụng Số hộp cát Whatsapp của Twilio cho bot Whatsapp của chúng tôi. Với mỗi người, con số này sẽ khác nhau. Bạn có thể tìm thấy số của mình như thế này:

  • Đăng nhập vào tài khoản Twilio của bạn
  • Đi tới Bảng điều khiển Twilio -> Phần Whatsapp -> Hộp cát
  • Bạn sẽ thấy số Twilio Sandbox của mình với dòng chữ sau:

Mời bạn bè của bạn vào Hộp cát của bạn. Yêu cầu họ gửi tin nhắn WhatsApp tới:

Do chính sách bảo mật của Whatsapp, tất cả những ai muốn nói chuyện với bot tự động qua Whatsapp cần phải chọn tham gia một cách rõ ràng bằng cách sử dụng mã. Bạn có thể tìm ra mã của mình bằng cách xem trong phần giống như số hộp cát Twilio của bạn với văn bản:

Sau khi bạn đã có được Số Whatsapp Twilio Sandbox và mã chọn tham gia, để bắt đầu sử dụng bot, hãy chuyển đến điện thoại di động của bạn và làm như sau:

  1. Lưu "Số Whatsapp của Twilio Sandbox" vào địa chỉ liên hệ của bạn với tên của bạn (ví dụ: CovBot)
  2. Mở Whatsapp và gửi tin nhắn sau đến liên hệ đó:

tham gia

Bạn sẽ thấy một thông báo như thế này:

Twilio Sandbox: Của bạn đã sẵn sàng….

Điều này có nghĩa là bạn đã kết nối với bot của mình và sẵn sàng hỏi nó qs

Hãy thử ứng dụng của chúng tôi:

Để kiểm tra các tính năng khác nhau của bot sau khi bạn đã kết nối, hãy gửi thông báo sau tới bot:

Chào

Bạn sẽ thấy văn bản sau:

Chào mừng bạn đến với CoVbot!

Một chatbot đơn giản có thể cung cấp các bản cập nhật mới nhất của COVID-19 một cách đơn giản, nhanh chóng và dễ dàng. Vì tất cả chúng ta đều bị cách ly, nên bot có thể được sử dụng để đề xuất một số hoạt động thú vị nhằm tận dụng tối đa thời gian ở nhà khi chúng ta cố gắng giữ an toàn cho bản thân, bạn bè và gia đình. Chúng tôi hy vọng bạn sẽ thích nó và tìm thấy nó hữu ích! Gửi 4 để bắt đầu!

Bây giờ bạn có thể làm theo tùy chọn để thử các tính năng khác nhau của bot.

ĐÓ LÀ NÓ! Chatbot Whatsapp của bạn đã sẵn sàng !!!! Xin chúc mừng

Bước 6: Nó hoạt động như thế nào và cải tiến trong tương lai:

Nó hoạt động như thế nào và cải tiến trong tương lai
Nó hoạt động như thế nào và cải tiến trong tương lai
Nó hoạt động như thế nào và cải tiến trong tương lai
Nó hoạt động như thế nào và cải tiến trong tương lai
Nó hoạt động như thế nào và cải tiến trong tương lai
Nó hoạt động như thế nào và cải tiến trong tương lai
Nó hoạt động như thế nào và cải tiến trong tương lai
Nó hoạt động như thế nào và cải tiến trong tương lai

Phần này dành cho những người đã có một số kinh nghiệm lập trình python. Nếu không, bạn có thể bỏ qua phần này

Giải thích mã

Vòng lặp chính:

Khi một tin nhắn Whatsapp được gửi đến số Twilio của bạn, API Twilio sẽ thực hiện một yêu cầu ĐĂNG tới máy chủ của bạn mà bạn đã chỉ định. Máy chủ được triển khai bằng cách sử dụng khung Flask và vì vậy chúng ta có thể sử dụng đối tượng Flask Request để truy xuất dữ liệu nhận được trong yêu cầu POST. Dựa trên dữ liệu (Các con số trong trường hợp này), chúng tôi quyết định người dùng đã chọn tùy chọn nào và đưa ra thông tin thích hợp

Dữ liệu COVID và Phim và Chương trình truyền hình:

Dữ liệu COVID 19, Phim và Chương trình truyền hình được truy xuất từ một API. Tôi sử dụng thư viện python yêu cầu để lấy dữ liệu và sau đó chuyển đổi nó thành định dạng JSON. Sau đó, tôi chỉ phân tích thông tin có liên quan. Đối với Phim và Chương trình truyền hình, tôi cũng đã sử dụng thư viện python ngẫu nhiên để chọn một chương trình truyền hình và Phim ngẫu nhiên

Chi tiết sách

Thuật toán gợi ý sách được sử dụng trong dự án chỉ là một trình duyệt web. Tôi không thể tìm thấy bất kỳ API nào cung cấp cho bạn một cuốn sách ngẫu nhiên với thông tin chi tiết, vì vậy tôi chỉ cần duyệt trang web bằng BeautifulSoup4 và sử dụng trình phân tích cú pháp lxml, tôi trích xuất thông tin liên quan của cuốn sách

Chi tiết Menu phụ:

Việc triển khai các menu phụ phức tạp hơn một chút so với phần còn lại vì tin nhắn Whatsapp giống như SMS, là một giao thức không trạng thái. Để giải quyết vấn đề này, tôi đã sử dụng hai kỹ thuật:

  1. Sử dụng Biến toàn cục để ghi nhớ trạng thái của thông báo - Điều này chỉ được triển khai cho tùy chọn phụ COVID 19. Trong trường hợp này khi người dùng chọn "Trạng thái của tùy chọn COVID 19 ở quốc gia của tôi", một biến toàn cục có tên không đầy đủ_message được đặt thành Đúng để cho biết sau đó một biến khác được phân loại dựa trên tùy chọn trước đó vẫn là cần thiết. Sau đó, có một kiểm tra ở phần đầu để kiểm tra xem thông báo có được đánh dấu là chưa hoàn thành hay không nếu vậy nó giả định thông báo đó là tên quốc gia cho dữ liệu COVID và chuyển thông tin đến đúng hàm và đặt thông báo không đầy đủ biến toàn cục thành Sai.
  2. Sử dụng Twilio Cookies và Flask Sessions - Cookie và Flask Sessions được sử dụng trong menu phụ "Đề xuất hoạt động cách ly" để triển khai trạng thái, giống như bất kỳ ứng dụng web nào trên internet sử dụng nó ngày nay, nhưng thay vì ghi nhớ những thứ như tên người dùng của bạn hoặc tài khoản nó ghi nhớ sự chuyển đổi giữa Hai số. Nếu bạn muốn biết thêm thông tin về phần này, tôi khuyên bạn nên đọc hướng dẫn tuyệt vời này về Twilio Cookies do Nhóm Twilio viết

Cải tiến trong tương lai:

  1. Sử dụng Hướng đối tượng của Python và Mẫu thiết kế để cải thiện kiến trúc mã và độ KHÔ
  2. Xóa các biến toàn cục
  3. Xử lý lỗi có thể được cải thiện
  4. Tự động cập nhật địa chỉ ngrok bằng cách sử dụng ngô và Twilio CLI
  5. Tài liệu mã

Bước 7: Ghi chú cuối cùng

Tôi hy vọng tất cả các bạn thích dự án này. Đây là hướng dẫn đầu tiên của tôi, vì vậy nếu có điều gì không rõ ràng hoặc cần giải thích thêm, hãy cho tôi biết trong phần bình luận, và tôi có thể giúp bạn. Ngoài ra, nếu bạn thực hiện dự án này với một kỹ thuật hoặc danh sách tính năng khác, tất cả hãy chia sẻ nó

Đề xuất: