Làm cách nào để gửi SMS bằng Python?

Tin nhắn văn bản Dịch vụ tin nhắn ngắn [SMS] phổ biến để liên lạc trên toàn thế giới. Thật dễ dàng để gửi tin nhắn văn bản SMS từ ứng dụng Python bằng giao diện lập trình ứng dụng web [API]. Chúng ta hãy xem các công cụ chúng ta cần để nhanh chóng thêm khả năng SMS vào các ứng dụng Python của mình

Công cụ chúng tôi cần

Hướng dẫn này hoạt động với cả Python 2 và 3, vì vậy hãy đảm bảo bạn đã cài đặt một trong hai phiên bản đó

Nếu bạn cần hỗ trợ cài đặt pip và virtualenv, hãy xem một số bước đầu tiên về cách thiết lập Python 3, Flask và Green Unicorn trên Ubuntu 16. 04 Hướng dẫn LTS sẽ chỉ cách cài đặt các gói hệ thống cho các công cụ đó

Sử dụng API Web

Chúng tôi sẽ sử dụng API web để gửi SMS dễ dàng hơn và đáng tin cậy hơn. Truy cập trang web Twilio và đăng ký tài khoản dùng thử miễn phí, tuyệt vời hơn là chỉ gửi tin nhắn văn bản. ] sau đó đăng nhập vào tài khoản hiện tại của bạn

Tài khoản dùng thử Twilio cho phép bạn gửi tin nhắn văn bản đến số điện thoại đã được xác thực của riêng bạn. Khi bạn muốn gửi tin nhắn SMS đến bất kỳ số điện thoại nào ở quốc gia của bạn hoặc các quốc gia khác thì bạn có thể nâng cấp tài khoản của mình để gửi tin nhắn cho các phân số của một xu

Sau khi đăng ký, bạn sẽ nhận được một số điện thoại miễn phí ở quốc gia của mình. Chúng tôi có thể sử dụng số điện thoại đó mà không cần bất kỳ cấu hình nào để gửi tin nhắn văn bản đi. Bạn cũng có thể nhận tin nhắn văn bản nhưng điều đó yêu cầu phải thay đổi webhook URL Yêu cầu trong màn hình cấu hình số điện thoại - chúng tôi sẽ đề cập đến điều đó trong một bài đăng trên blog trong tương lai

Cài đặt phụ thuộc của chúng tôi

Mã của chúng tôi sẽ sử dụng thư viện trợ giúp để giúp gửi tin nhắn văn bản từ Python dễ dàng hơn. Chúng tôi sẽ cài đặt thư viện trợ giúp từ PyPI vào virtualenv. Đầu tiên chúng ta cần tạo virtualenv. Trong thiết bị đầu cuối của bạn, hãy sử dụng lệnh sau để tạo một virtualenv mới. Nếu bạn cần cài đặt virtualenv, hãy xem cách thiết lập Python 3, Flask và Green Unicorn trên Ubuntu 16. 04 hướng dẫn LTS

Kích hoạt virtualenv

source sendsms/bin/activate

Dấu nhắc lệnh sẽ thay đổi sau khi chúng tôi kích hoạt đúng cách virtualenv thành một thứ như thế này

Bây giờ hãy cài đặt thư viện trợ giúp Twilio Python. Chúng tôi đang sử dụng 6. 0. 0 trở lên, điều này rất quan trọng vì cú pháp trong bài đăng này không tương thích ngược với 5. x và các phiên bản thư viện trợ giúp Twilio trước đó

pip install twilio>=6.0.0

Thư viện trợ giúp hiện đã được cài đặt và chúng tôi có thể sử dụng nó với mã Python mà chúng tôi tạo và thực thi

Gửi SMS từ Python

Kích hoạt trình thông dịch Python trong thiết bị đầu cuối bằng cách sử dụng lệnh python hoặc tạo một tệp mới có tên send_sms.py

Chúng tôi cần lấy thông tin đăng nhập tài khoản của mình từ Bảng điều khiển Twilio để kết nối mã Python với tài khoản Twilio của chúng tôi. Truy cập Bảng điều khiển Twilio và sao chép SID tài khoản và Mã thông báo xác thực vào mã Python của bạn

Nhập đoạn mã sau vào trình thông dịch hoặc vào tệp Python mới. Bạn cũng có thể sao chép và dán mã từ kho lưu trữ blog-code-examples Git trong tổ chức Full Stack Python GitHub

# we import the Twilio client from the dependency we just installed
from twilio.rest import Client

# the following line needs your Twilio Account SID and Auth Token
client = Client["ACxxxxxxxxxxxxxx", "zzzzzzzzzzzzz"]

# change the "from_" number to your Twilio number and the "to" number
# to the phone number you signed up for Twilio with, or upgrade your
# account to send SMS to any phone number
client.messages.create[to="+19732644152", 
                       from_="+12023351278", 
                       body="Hello from Python!"]

Tất cả các dòng trên bắt đầu bằng # đều là nhận xét. Khi bạn nhập mã đó vào trình thông dịch hoặc chạy tập lệnh Python bằng cách sử dụng python send_sms.py, SMS sẽ được gửi

Trong vài giây, bạn sẽ thấy một thông báo xuất hiện trên điện thoại của mình. Tôi đang dùng iOS nên đây là giao diện của tin nhắn văn bản tôi nhận được

Đó là nó. Bạn có thể thêm mã này vào bất kỳ mã Python nào để gửi tin nhắn văn bản. Chỉ cần giữ bí mật Mã thông báo xác thực của bạn vì nó sẽ cho phép bất kỳ ai có nó sử dụng tài khoản của bạn để gửi và nhận tin nhắn

Câu hỏi? . Tôi cũng trên GitHub với tên người dùng là mattmakai

Python là ngôn ngữ lập trình cấp cao, linh hoạt cho mọi thứ, từ phát triển trang web đến ứng dụng hệ điều hành

Ngôn ngữ lập trình Python sử dụng các mô-đun mã có thể hoán đổi cho nhau thay vì một danh sách dài các hướng dẫn tiêu chuẩn cho các ngôn ngữ lập trình chức năng

Nó có các tính năng sau.  

  • Nó đơn giản và nhanh chóng. Các chương trình Python được tạo nhanh chóng và có thể có ít hơn 3 đến 5 dòng mã so với các chương trình tương đương trong Java
  • nó miễn phí. Nó là một ngôn ngữ nguồn mở, vì vậy không cần giấy phép đặc biệt để sử dụng nó.  
  • Một cộng đồng rộng lớn hỗ trợ nó. Các lập trình viên liên tục phát triển các thư viện và ứng dụng mới, giải quyết các nghi ngờ có thể xảy ra trên nhiều diễn đàn.  
  • Nó là một ngôn ngữ đa mô hình. Nó kết hợp các thuộc tính của các mô hình lập trình khác nhau, làm cho nó rất linh hoạt và dễ học
  • Tính đa mô hình cho phép nó được sử dụng trong các lĩnh vực khác nhau như thiết kế ứng dụng web hoặc trí tuệ nhân tạo
  • đa nền tảng. Python phù hợp với mọi nền tảng và thích ứng với các phần mềm khác nhau [ví dụ: Windows hoặc Linux]

Ngôn ngữ lập trình này cho phép chúng tôi tạo vô số hành động giao tiếp theo cách đơn giản, chẳng hạn như bot trên trang web thương hiệu của chúng tôi, tin nhắn tự động cho các chiến dịch tiếp thị của chúng tôi, kiểm soát đầu vào và đầu ra GPIO trên Orange Pi hoặc Raspberry Pi, tương tác với máy chủ WhatsApp

Làm thế nào để làm điều đó từng bước

Trước hết, nếu bạn chưa có, chúng tôi khuyên bạn nên tạo một tài khoản Instasent để tận hưởng tất cả các sản phẩm của nó và có SDK cho các ngôn ngữ lập trình phổ biến nhất

1 – Điều đầu tiên bạn phải làm là cài đặt Bộ công cụ phát triển phần mềm [SDK] Instasent

2 – Bước tiếp theo là nhập thư viện

require DIR . '/vendor/autoload.python';

3 – Sau đó, đã đến lúc tạo ứng dụng khách mà chúng tôi muốn gửi SMS. Trong mã này, bạn phải đảm bảo bao gồm mã thông báo API của mình

$instasentClient = new InstasentClient["MY_TOKEN"];

4 – Sau đó, chúng tôi phải gửi tin nhắn SMS. Bạn có thể làm điều đó với Ký tự Unicode [mà bạn có thể gửi biểu tượng cảm xúc] hoặc [giới hạn ở các ký tự Latinh, bao gồm cả ñ]. Hãy xem một ví dụ về từng cái

bảng chữ cái

$response = $instasentClient->sendUnicodeSms["Instasent", "+34666000000", "Unicode test message: ña éáíóú 😀"];

GSM

$response = $instasentClient->sendSms["Instasent", "+34666000000", "Test message"];

5 – Cuối cùng, chúng ta sẽ chỉ phải kiểm tra phản hồi

if [$response["response_code"] === 201] {
// Send success
$sms = \json_decode[$response["response_body"], true]['entity'];
} else {
// Send error
}

Thí dụ

Đây là ví dụ đơn giản nhất về gửi SMS qua cURL. Tại đây, trong phần “Ủy quyền”, bạn sẽ phải đặt mã thông báo API của mình

________số 8_______

Phản hồi

json
{
  "entity": {
    "id": "588875a72c98d52a6348e701",
    "clientId": null,
    "status": "enqueued",
    "statusCode": null,
    "from": "Instasent",
    "country": "ES",
    "to": "+34666000000",
    "normalizedTo": "+34666000000",
    "charsCount": 28,
    "text": "Test message",
    "deliveredText": "Test message",
    "messagesCount": 1,
    "concatsLimit": 10,
    "finalMessagesCount": 1,
    "encoding": "GSM_7BIT",
    "unicode": false,
    "allowUnicode": false,
    "isSanitized": true,
    "isTruncated": false,
    "charged": true,
    "pricePerSms": 0,
    "priceUser": 0,
    "deliveryReportMask": 0,
    "scheduledAt": null,
    "chargedAt": "2020-01-01T00:00:00+0200",
    "sentAt": null,
    "deliveredAt": null,
    "createdAt": "2020-01-01T00:00:00+0200"
  }
}

Cân nhắc và khuyến nghị

Người gửi

Trường “từ” là nơi người gửi tin nhắn sẽ xuất hiện với người nhận. Hãy nhớ rằng trường này có giới hạn 11 ký tự, vì vậy nếu tên thương hiệu của bạn dài hơn, chúng tôi khuyên bạn nên “cắt bớt” nó, chẳng hạn như bằng cách nối các từ lại với nhau.  

Người nhận

Khi bạn chèn số của một trong các số liên lạc của mình, hãy nhớ rằng số đó phải luôn ở dạng E. định dạng 164. Như bạn đã biết, mỗi quốc gia có một tiền tố mà chúng tôi phải đưa vào khi thực hiện cuộc gọi hoặc gửi tin nhắn. Tiền tố của Tây Ban Nha là 34. Do đó, hãy làm theo các bước sau

  • chèn dấu cộng [+]
  • sau đó thêm tiền tố của quốc gia mà SMS của bạn được gửi đến
  • cuối cùng, nhập số điện thoại

Bộ ký tự

Như đã đề cập ở trên, các loại mã hóa khác nhau tùy thuộc vào những gì bạn muốn sử dụng trong SMS của mình

  • GSM. Điều này chỉ dính vào bảng chữ cái Latinh. Nó bao gồm một số điểm nhấn, nhưng không phải tất cả
  • bảng chữ cái. Không có giới hạn nào, và ngoài ra, bạn có thể chèn biểu tượng cảm xúc 😀

Khi bạn viết SMS, Instasent sẽ chọn loại ký hiệu bạn đang sử dụng

Độ dài tin nhắn

Tùy thuộc vào bộ ký tự bạn sử dụng, bạn sẽ có một lề khác nhau về độ dài của tin nhắn văn bản. Hãy suy nghĩ cẩn thận trước khi sử dụng một trong hai vì sự khác biệt giữa chúng là rất quan trọng

  • GSM. Số ký tự tối đa là 160 [153 cho SMS nối]
  • bảng chữ cái. Điều này được giới hạn ở 70 ký tự [67 cho SMS nối]

Nếu bạn vượt quá số lượng ký tự, hệ thống sẽ phát hiện nó dưới dạng một số SMS [bất kể bạn sử dụng bộ ký tự nào]. Người nhận sẽ nhận được nó dưới dạng một SMS duy nhất [tất cả cùng nhau], nhưng bạn sẽ được tính [và tính phí] thành nhiều. Hãy ghi nhớ điều này để tránh bất ngờ

bộ sưu tập người đưa thư

Trong phần Tài liệu Instasent, bạn sẽ có sẵn InstasentAPI. người đưa thư_collection. json để bạn có thể đưa nó vào Postman để sử dụng API

SDK Python

Instasent cung cấp SKD để gói gọn và tạo điều kiện thuận lợi cho việc sử dụng Rest API của chúng tôi bằng một số ngôn ngữ, bao gồm cả Python

Điều đầu tiên cần làm là cài đặt SDK bằng pip

$> pip install instasent

Khi chúng tôi đã cài đặt SDK, chúng tôi có thể sử dụng nó

python
import instasent

client = instasent.Client['MY_TOKEN']

Đảm bảo bao gồm mã thông báo API của bạn trong ngoặc đơn

Chỉ gửi SMS với các ký tự GSM

response = client.send_sms['Instasent', '+34666000000', 'Test message']

Gửi tin nhắn SMS với các ký tự Unicode

phản ứng = khách hàng. send_sms_unicode[‘Instasent’, ‘+34666000000’, ‘Thông báo kiểm tra Unicode. ña éáíóú 😀’]

$instasentClient = new InstasentClient["MY_TOKEN"];
0

Các lỗi kỹ thuật phổ biến nhất

Các lỗi phổ biến nhất là mã phản hồi, sẽ đến với bạn dưới dạng mã HTTP từ API. Hãy xem ý nghĩa của từng người

Mã 201 là mã dương, nghĩa là tin nhắn đã được gửi chính xác

Sự cố xảy ra khi mã chúng tôi nhận được khác với mã đó. Trong trường hợp này, mỗi mã có giải thích của nó

  • 400 yêu cầu sai. Nội dung yêu cầu có định dạng không chính xác hoặc đã xảy ra sự cố với yêu cầu của bạn
  • Xác thực 401 không thành công. Mã thông báo được sử dụng không hợp lệ
  • 402 Không có tiền. Bạn đã hết tín dụng trong tài khoản của mình
  • 413 Thực thể yêu cầu quá lớn. SMS hàng loạt của bạn có quá nhiều yếu tố
  • 422 lỗi xác thực. Lỗi xác thực [e. g. , khi số đích không hợp lệ]
  • 429 Đã đạt đến giới hạn tỷ lệ. Có quá nhiều yêu cầu SMS mỗi phút

Một trong những lỗi phổ biến nhất là 422, lỗi này cho chúng tôi biết chính xác lỗi gửi SMS không thành công. Trong ví dụ bên dưới, chúng tôi thấy rằng lỗi là số không hợp lệ

$instasentClient = new InstasentClient["MY_TOKEN"];
1

Một lỗi phổ biến khác là 429, có nghĩa là chúng tôi muốn gửi quá nhiều SMS mỗi phút. Giải pháp cho vấn đề này chỉ đơn giản là làm chậm tốc độ chúng tôi gửi tin nhắn mỗi phút

Tại sao làm điều đó với API Instasent?

Trong Instasent, chúng tôi có một giao diện rất thân thiện sẽ tạo điều kiện thuận lợi và tăng tốc mọi tác vụ lập trình và vận chuyển. Ngoài ra, API HTTP của chúng tôi sẽ cho phép bạn

  • Gửi tin nhắn
  • tìm số
  • Xác minh số điện thoại

Đối với mỗi hành động được đề cập ở trên, chúng tôi có một phần thử nghiệm nơi bạn có thể thử cách chúng hoạt động để xem chúng có phù hợp với nhu cầu của bạn không. Ngoài ra chúng ta còn có tool tạo code tự động

Giá cả

Chúng tôi giúp bạn dễ dàng chỉ trả tiền cho SMS bạn gửi, với mức giá phù hợp với những gì bạn thực sự cần, không cần đăng ký hoặc phí hàng tháng. Ngoài ra, chúng tôi cung cấp cho bạn một công cụ tính giá để bạn có thể biết được chi phí gửi SMS mà bạn muốn gửi là bao nhiêu [giá thay đổi tùy thuộc vào quốc gia đích và số lượng SMS bạn muốn gửi]

Chúng tôi có các phương thức thanh toán khác nhau, bao gồm Paypal, Thẻ tín dụng và Chuyển khoản ngân hàng và chúng tôi làm việc tại hơn 200 quốc gia

Chúng tôi có thể gửi SMS qua Python không?

Gửi tin nhắn SMS bằng Python qua API REST. Để gửi tin nhắn SMS đi từ tài khoản Twilio của bạn, bạn cần tạo HTTP POST cho tài nguyên Tin nhắn của Twilio . Thư viện Python của Twilio giúp bạn tạo một phiên bản mới của tài nguyên Thư, chỉ định các tham số Đến, Từ và Nội dung của thư của bạn.

Làm cách nào để gửi SMS miễn phí từ Python?

Trước tiên, bạn cần tạo KHÓA API REST để gửi SMS bằng Python Script. .
ủy quyền – true, Cung cấp “YOUR_API_KEY”. .
tin nhắn – đúng, Tin nhắn “văn bản” sẽ được gửi
ngôn ngữ – sai, Ngôn ngữ mặc định là “tiếng Anh”. .
route – true, Đối với SMS nhanh, hãy sử dụng “q”

Làm cách nào để gửi SMS di động bằng Python?

Hoặc làm theo các bước để gửi SMS. .
Nhập ứng dụng khách twilio từ twilio. .
Nhận và lưu trữ account_sid và auth_token từ tài khoản Twilio của bạn
Tạo phiên bản của Máy khách bằng cách chuyển account_sid và auth_token
Bây giờ, lấy số from từ tài khoản Twilio của bạn
Bây giờ, hãy gửi tin nhắn bằng ứng dụng khách

Làm cách nào để gửi SMS bằng Python mà không cần Twilio?

Điều này có thể được thực hiện bằng cách gửi email qua SMTP đến cổng SMS của nhà cung cấp dịch vụ của số điện thoại người nhận . Mỗi nhà cung cấp dịch vụ có một địa chỉ email duy nhất thường ở dạng {number}@{host}. Trong Python, bạn có thể sử dụng thư viện smptlib [hoặc aiosmtplib] dựng sẵn để gửi email.

Chủ Đề