blog posts

Python’da SMS ve MMS Mesajları Nasıl Gönderilir?

Bu öğretici, Python uygulamanızı kullanarak SMS ve MMS göndermek için Twilio’nun Programlanabilir SMS’ini nasıl kullanacağınızı gösterecektir.

Bu öğreticideki kod örnekleri, Python Twilio yardımcı kitaplıklarını kullanır. Başlayalım!

Twilio’ya kaydolun veya hesabınızda oturum açın.

Bir Twilio hesabınız ve metin özellikli bir Twilio telefon numaranız varsa artık hazırsınız! Koda kolayca gidin.

Telefon çağrıları almadan ve mesaj göndermeden önce, bir Twilio hesabına kaydolmalı ve bir Twilio telefon numarası satın almalısınız.

Twilio’da yeniyseniz, ücretsiz deneme hesabı için kaydolabilirsiniz. Kaydolduktan sonra konsolunuza gidin ve hesap SID’nizi ve doğrulama şifrenizi alın. Aşağıdaki kod örneği için bu değerlere sahip olmanız yardımcı olacaktır.

 

SMS (ve MMS) özelliklerine sahip bir telefon numarası alın

Mesaj göndermek için kısa mesaj özelliği olan bir Twilio telefon numarasına ihtiyacınız var. Mesajlaşma özelliklerine sahip bir Twilio telefon numaranız yoksa bir tane satın almanız gerekecek. Numara satın alma sayfasına gittikten sonra SMS kutusunu işaretleyin ve ara düğmesine tıklayın:

 

 

ABD’de veya Kanada’da yaşıyorsanız ve ayrıca MMS mesajları göndermek istiyorsanız MMS kutusunu işaretleyebilirsiniz. Arama sonuçlarını görüntülerken, kullanılabilir numaralar listesinde özellik simgelerini görebilirsiniz:

 

 

Beğendiğiniz numarayı bulun ve hesabınıza eklemek için satın al’a tıklayın.

Bir demo hesabı kullanıyorsanız, kendinize SMS göndermeyi test etmeden önce telefon numaranızı konsol aracılığıyla doğrulayın.

Artık bir Twilio telefon numaranız olduğuna göre mobil cihazlara mesaj gönderebilirsiniz.

 

 

REST API aracılığıyla Python’da SMS gönderme

Twilio hesabınızdan giden SMS göndermek için mesaj kaynağına bir HTTP POST göndermelisiniz.

Twilio Python kitaplığı, mesaj kaynağının yeni bir örneğini oluşturmanıza ve mesajınızın Kime, Kimden ve Gövde parametrelerini belirlemenize yardımcı olur.

 

Python yardımcı kitaplığı zaten kurulu değilse, onu pip kullanarak yükleyebilirsiniz:

 

 

pip kurulumu twilio

Pip kullanmıyorsanız, manuel kurulum talimatlarını burada bulabilirsiniz.

Şimdi send_sms.py adlı bir dosya oluşturun ve aşağıdaki kodu girin:

account_sid ve auth_token için yer tutucu değerlerini benzersiz değerlerinizle değiştirin. Bunları Twilio konsolunuzda bulabilirsiniz.

Kimden_ numarasını zaten satın aldığınız Twilio telefon numarasıyla değiştirerek, Twilio’ya bu mesajı göndermek için hangi telefon numarasını kullanacağını söylersiniz.

Ardından, hedefi cep telefonu numaranızla değiştirerek mesajın alıcısı olarak kendinizi tanımlayın. Her iki parametre de E.164 biçimlendirmesini kullanmalıdır (+ ve bir ülke kodu, örneğin, +16175551212).

twilio ayrıca göndermek istediğimiz SMS’in içeriğini içeren bir body parametresi içerir.

Örnek kodu güncelledikten sonra, komut satırından çalıştırarak test edebilirsiniz:

piton send_sms.py

SMS’i birkaç dakika içinde alacaksınız.

Twilio’ya bu isteği gönderdiğinizde perde arkasında neler olduğunu anlamak için biraz zaman ayıralım.

 

Twilio’nun cevabı

Twilio, REST API aracılığıyla SMS gönderme isteğinizi aldığında, from_ alanına geçerli bir Twilio telefon numarası girip girmediğinizi kontrol eder. Twilio daha sonra SMS’i kuyruğa alacak veya isteğinize yanıt olarak bu HTTP hatasını döndürecektir.

 

İsteğinizin herhangi bir hatayla sonuçlanmadığını varsayarsak, Twilio‘nun HTTP yanıtı yeni mesajın SID’sini içerecektir. Bu benzersiz kimlik, bu mesaja daha sonra başvurmamıza yardımcı olur: Bu SID’yi yukarıdaki koddaki terminale yazdırdık.
Twilio’nun JSON yanıtı, mesajınız hakkında birçok veri içerir. Örnek bir cevap şöyle olabilir:

 

{“sid”: “SMxxxxxxxxxxxxxxx”, “date_created”: “Thu, 09 Aug 2018 17:26:08 +0000”, “date_updated”: “Thu, 09 Aug 2018 17:26:08 +0000”, “date_sent” : null, “account_sid”: “ACxxxxxxxxxxxxxxx”, “to”: “+15558675310”, “from”: “+15017122661”, “messaging_service_sid”: null, “body”: “This is the ship that made the Kessel Run in fourteen parsecs?”, “status”: “queued”, “num_segments”: “1”, “num_media”: “0”, “direction”: “outbound-api”, “api_version”: “2010-04-01” , “price”: null, “price_unit”: “USD”, “error_code”: null, “error_message”: null, “uri”: “/2010-04-01/Accounts/ACxxxxxxxxx/Messages/SMxxxxxxxxxxxx.json”, “subresource_uris”: { “media”: null } }

 

Bu özelliklerden herhangi birine Python kodunuzdan erişebilirsiniz, tıpkı message.sid dosyasını yazdırdığımızda olduğu gibi.

print(message.status) gibi bir print ifadesi eklemeyi deneyin. Dosyayı kaydedin, ardından kodu tekrar python send_sms.py ile çalıştırın. Terminalinizde yazdırılan “Kuyruğa Alındı” mesajınızın durumunu görmelisiniz.

Python’da birden çok alıcıya SMS gönderin

Python’da birden fazla alıcıya sms göndermek istiyorsanız, bir alıcı dizisi oluşturabilir ve dizideki her telefon numarasını yineleyebilirsiniz:

 

numbers_to_message = [‘+15558675310’, ‘+14158141829’, ‘+15017122661′] for number in numbers_to_message: client.messages.create( body=’Hello from my Twilio number!’, from_=’+15017122662′, to=number )

 

Bu, listedeki her telefon numarası için yeni bir mesaj örneği oluşturur.

Python’daki SMS hız limiti hakkında bir not

API üzerinden daha fazla mesaj gönderdikçe, Twilio onları belirlediğiniz hız limitinde teslim edilmek üzere sıraya alır. Belirtilen oranları aşan iletiler için API istekleri kuyruğa alınır ve kapasite müsait oldukça işlenir.

Uygulamanız 4 saatten fazla giden trafiği kuyruğa almaya çalışırsa (örneğin, uzun kodlu bir telefon numarasında Kanada’ya giden 14.400’den fazla iletiyi sıraya koyun), API bir 429 hatası döndürmeye başlar.

Python’da medya içeren bir mesaj nasıl yapılır (MMS)

Twilio’yu kullanarak metin mesajınıza medya eklemek için yukarıda yazdığımız kodu eklemeniz gerekecek. Bu sefer media_url parametresini eklememiz gerekiyor.

send_mms.py adlı bir dosya oluşturun ve aşağıdaki kodu girin:

Yine, Twilio ve cep telefonu numaralarınızı kullanmak için from_ ve to parametrelerini güncelleyin.

Bu koddaki yeni media_url parametresi, Twilio’ya eklemek istediğimiz medyayı almak için nereye gideceğini söyler. Bu, herkesin erişebileceği bir URL olmalıdır: Twilio, kimlik doğrulaması gerektiren gizli URL’lere erişemez.

Basit bir kısa mesaj gönderdiğinizde olduğu gibi, Twilio, isteğinize yanıt olarak mesajla ilgili bilgileri gönderir. JSON yanıtı, medya kaynağınız için benzersiz SID ve URI’yi içerecektir:

 

“subresource_uris”: {“media”: “/2010-04 01/Accounts/ACxxxxxxxxx/Messages/SMxxxxxxxxxxxxxxx/Media.json”}

 

Twilio REST API yeni ileti kaynağınızı oluşturduğunda, görüntüyü ortam kaynağı olarak belirtilen media_url’de depolar. Oluşturulduktan sonra, bu kaynağa API aracılığıyla istediğiniz zaman erişebilirsiniz.

Resmin nerede depolandığını görmek için Python kodunuzdan bu değeri yazdırın. Yeni oluşturulan medya URI’nizi görmek için send_mms.py dosyanızın sonuna aşağıdaki satırı ekleyin:

print(message.media._uri)

Dosyayı kaydedin ve komut satırından çalıştırın:

python send_mms.py

Birkaç dakikadan kısa bir süre içinde resimli bir metin mesajı almalısınız!

Artık Twilio Programmable SMS API ve Python yardımcı kitaplığı ile bazı mesajları başarıyla gönderdiniz.