CM API's und Python- Module
Wir verwenden für dieses Beispiel den Numberlookup und die Business Messaging API. Die jeweiligen Dokumentationen finden Sie im Developers- Bereich.
Folgende Python- Module werden importiert:
import requests import pandas as pd from functools import partial
Send SMS- Funktion
Zuerst definieren wir eine Funktion, die die SMS API aufruft. An diese Funktion übergeben wir den Product-Token, Sender, die Rufnummern (msisdns), und den Nachrichtentext:
def send_SMS(token,sender,msisdns,text): url = 'https://gw.cmtelecom.com/v1.0/message' message = { "messages": { "authentication": { "producttoken": token }, "msg": [ { "allowedChannels":["SMS"], "from": sender, "to": [{"number":msisdn} for msisdn in msisdns], "body": { "content": text } } ] } } headers = {"contentType":"application/json"} resp = requests.post(url,json=message,headers=headers) return resp.json()
Als Output erhalten wir die Rückgabewerte der SMS API im JSON- Format.
Numberlookup- Funktion zur Rufnummernüberprüfung
Als nächstes erstellen wir die Funktion für den Numberlookup. Hier wird auch wieder der Producttoken (token) und eine einzelne Rufnummer (msisdn) übergeben. Als Output erhalten wir die Rückgabewerte der Numberlookup- API im JSON- Format.
def numberlookup(token,msisdn): url = "https://api.cmtelecom.com/v1.1/numberlookup" headers = {"contentType":"application/json",'X-CM-PRODUCTTOKEN':token} body = {"phonenumber":msisdn} resp = requests.post(url,json=body,headers=headers) return resp.json()
Formatieren und Verifizieren der Rufnummern
Zuerst laden wir die Rufnummern aus einer Excel Tabelle namens "Kontakte.xlsx" in einen pandas- Dataframe (df).
df_msisdns = pd.read_excel("Kontakte.xlsx")
Die Rufnummern befinden sich im Spaltennamen "MSISDN". Um die Nummern in das richtige Format zu bringen, wird "00" hinzugefügt.
df_msisdns["MSISDN"] = ["00"+str(x) for x in df_msisdns["MSISDN"].values]
Nachdem die Rufnummern nun im richtigen Format sind, lassen wir sie über unsere oben definierte Funktion überprüfen. Die Informationen, die wir über die Numberlookup- API bekommen, speichern wir in einem neuen DataFrame.
df_msisdns_verified = pd.DataFrame(list(map(partial(numberlookup,token),df_msisdns["MSISDN"].values)))
Die Daten, die wir über die API bekommen, wurden in Spalten gespeichert.
df_msisdns_verified.columns Out[17]: Index(['active_number', 'carrier', 'carrier_mcc', 'carrier_mnc', 'country_code', 'country_iso', 'format_e164', 'format_international', 'format_national', 'ported', 'region', 'region_code', 'roaming', 'roaming_carrier', 'roaming_country_iso', 'roaming_country_prefix', 'roaming_mcc', 'roaming_mnc', 'timezone', 'type', 'valid_number'], dtype='object')
SMS über API versenden
Wir speichern die validen Rufnummern (valid_number=True) in eine Liste.
msisdns = list(df_msisdns_verified[df_msisdns_verified["valid_number"].values==True]["format_e164"].values)
Die msisdns- Liste zusammen mit unserem Product-Token (token), dem Sender und dem Nachrichtentext übergeben wir der Funktion "send_SMS".
sms_resp = send_SMS(token,"test",msisdns,"Das ist eine Test SMS")
Die Ausgabe, die wir in der Variablen "sms_resp" gespeichert haben, zeigt uns, dass die Nachrichten erfolgreich versendet wurden.
sms_resp Out[19]: {'details': 'Created 1 message(s)', 'errorCode': 0, 'messages': [{'to': '00491712669443', 'status': 'Accepted', 'reference': None, 'parts': 1, 'messageDetails': None, 'messageErrorCode': 0}]}
Dieses Beispiel sollte veranschaulichen, wie Sie die API's in Python verwenden können, um Rufnummern zu überprüfen und SMS zu versenden.