2016-07-12 14 views
-3

wissen Ich möchte über die Implementierung des Sendens einer SMS durch Oracle pl/Sql.Wenn jemand, der sich entwickelt hat, bitte eine Eingabe bereitstellen.Ich möchte über die Implementierung des Sendens einer SMS durch Orakel pl/Sql

+0

SO ist für detaillierte Fragen zu bestimmten Programmierproblemen gedacht; Fragen wie "Ich muss das tun, bitte helfe" werden als off-topic betrachtet. – Aleksej

+0

Wie ich weiß, können Sie dies nicht mit dem pl/sql-Verfahren tun, aber vielleicht können Sie das Oracle Java-Verfahren verwenden, um dies zu implementieren. – Ming

+0

Es sollte in der Lage sein, das Oracle-DB-Paket utl_mail zu verwenden, um eine E-Mail an das SMS-Gateway zu senden, und dieses SMS-Gateway sollte in der Lage sein, diese E-Mail in eine SMS zu konvertieren. Ich denke nicht, dass eine gespeicherte Java-Prozedur benötigt wird. – RayCW

Antwort

1

Dies sollte Ihnen einige Ideen geben, mit dieser Funktion kann ich SMS mit Seife API von SMS-Service senden, sollten Sie tune es mit Ihrem Soap-Umschlag, Antwort, IP-Brieftasche etc. Eingabe sollte XML-Daten nach Ihrem Dienst sein zusammen mit Umschlag - Sie müssen dies mit Ihrem Anbieter konsultieren.

Natürlich, wenn Sie Benutzer moderne Orakel Sie ACL für IP und Netzzugang sowie die Verschlüsselung für die Verbindung

function send(message_data in varchar2) return varchar2 is 
/************************************************** 
* author: jareeq 
* use as you like 
***************************************************/ 
    resp    sys.xmltype; 
    http_req   utl_http.req; 
    http_resp  utl_http.resp; 
    soap_request  clob; 
    soap_respond  clob; 
    v_result   varchar2(4096); 
    v_buffer_varchar varchar2(4096); 

begin 
/* wallet for https con */ 
    UTL_HTTP.set_wallet('file:/xxx/xxx/xxx/wallets', '************'); 
    soap_request := '<your soap envelope here>'; 
    utl_http.set_response_error_check(TRUE); 
    http_req := utl_http.begin_request('https://<your service request>', 
            'POST', 'HTTP/1.1'); 
    utl_http.set_header(http_req, 'Content-Type', 
         'application/xop+xml; type=text/xml; charset=utf-8'); 
    utl_http.set_header(http_req, 'Content-Length', length(soap_request)); 
    utl_http.write_text(http_req, soap_request); 
    http_resp := utl_http.get_response(http_req); 

    begin 
    loop 
     utl_http.read_text(http_resp, v_buffer_varchar); 
     soap_respond := soap_respond || v_buffer_varchar; 
    end loop; 
    utl_http.end_response(http_resp); 
    exception 
    when utl_http.end_of_body then 
     utl_http.end_response(http_resp); 
    end; 
    utl_http.close_persistent_conns('<your connection ip>', 443); 
    resp  := sys.xmltype.createXML(soap_respond); 
    v_result := resp.extract('<your extraction path>') 
       .getStringVal(); 
    return replace(replace(v_result,chr(10)),chr(13)); 

exception 
    when utl_http.end_of_body then 
    utl_http.end_response(http_resp); 
    utl_http.close_persistent_conns('<your connection ip>', 443); 
    return replace(replace(v_result,chr(10)),chr(13)); 
end send; 
0

Im Gegensatz zu E-Mail sollte sicherstellen, bietet Oracle keine API für Nachrichten per SMS. Sie können jedoch UTL_HTTP verwenden, um Anforderungen an ein SMS-Gateway zu senden, je nachdem, welche APIs Ihnen angeboten werden. Sie werden einige HTTP-, SOAP- und Rest-Style-APIs sowie E-Mail-to-SMS anbieten.

Persönlich benutze ich ein lokales Gateway hier in Australien (ClickSend), das meinen Bedürfnissen entspricht. Sie bieten eine REST-style-API, die mit UTL_HTTP relativ einfach aufgerufen werden kann.

Finden Sie zuerst ein Gateway, das Ihren Anforderungen und Ihrem Budget entspricht. Sie unterscheiden sich auch in der Servicequalität - einige sind nur Tier-2-Aggregatoren, so dass SMS einige Zeit brauchen, um durchzukommen; Tier 1 wird direkte Verbindungen oder Premium-Vereinbarungen mit einer Reihe von Mobilfunkbetreibern für eine schnelle Lieferung haben.