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"];
0Cá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"];
1Mộ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