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
Antwort
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;
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.
SO ist für detaillierte Fragen zu bestimmten Programmierproblemen gedacht; Fragen wie "Ich muss das tun, bitte helfe" werden als off-topic betrachtet. – Aleksej
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
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