2016-07-21 13 views
2

Ich habe eine Twilio-Nummer, die eingerichtet ist, um einen Webhook auszuführen, wenn eine Nachricht empfangen wird. Ich möchte einen Link in die Antwort einfügen, die ich an den Benutzer zurücksende. dh.Ein klickbarer Link in SMS-Nachricht mit Twilio

Bitte melden Sie sich an XYZ.com bei https://login.xyz.com/?client=SMS&userid=abc

Allerdings, wenn ich das bekomme ich Nachricht ein Schema Validierungsfehler im Twilio Debugger mit dem folgenden in der Antwortnachricht.

Warning - 12200 

Schema validation warning 

The provided XML does not conform to the Twilio Markup XML schema. Please refer to the specific error and correct the problem. 

Dies ist der Nachrichtentext:

<Response> 
    <Message>Please login to Botler at 'https://login.xyz.com/?client=Twilio&userid=foobar'</Message> 
</Response> 

Ich habe versucht, die URL URL-Codierung und ich nicht mehr ein Schema-Validierung Fehler jedoch der Link in der SMS nicht angeklickt ist (es ist alles die contains Escape-Zeichen).

Wie kann ich einen Link in SMS senden und es vom Benutzer anklickbar sein?

Danke.

Lösung

Nach viel Versuch und Irrtum fand ich eine Lösung, die funktioniert. Ich kann die URL in CDATA-Element umbrechen und es passiert Schema-Validierung und die Verknüpfung wird von Telefonen richtig interpretiert. Zum Beispiel

<Response> 
    <Message>Please login to Botler at <![CDATA[https://login.xyz.com/?client=Twilio&userid=foobar]]></Message> 
</Response> 
+0

Lösung und Original-Beitrag gefunden wurde bearbeitet, die Lösung schließen – Drew

Antwort

1

Die SMS ist nur Text. Das Gerät muss diesen Text abrufen und erkennen, dass es sich um einen Link handelt, der es klickbar macht.

Nach dem doc here das Problem verursacht:

  • falsch geschriebenen Verben
  • falsche Fall für Verben
  • falsch geschriebene oder unbekannte Attribute
  • unbekannte oder unerwartete verschachtelte Elemente.

Hoffe diese Hilfe.

+0

Ich verstehe Warum funktioniert das nicht in der aktuellen Form? Das Telefon erkennt eine URL mit Escapezeichen nicht als URL, und wenn ich es nicht entziehe, schlägt die Schemaüberprüfung fehl, also frage ich mich, wie ich die XML-Antwort so formatieren kann, dass sie mein String-Literal übergibt normaler Inhalt (der die Validierung nicht bestanden hätte) – Drew

0

Sie haben nicht die einfachen Anführungszeichen benötigen, versuchen Sie diese

<?xml version="1.0" encoding="UTF-8"?> 
<Response> 
    <Message>Please login to Botler at https://login.xyz.com/?client=Twilio&amp;userid=foobar</Message> 
</Response> 
+0

Noch immer scheitert die Schemaüberprüfung Fehler Ich habe einen Weg gefunden, es zu tun. Ich füge die Antwort in meinen ursprünglichen Beitrag ein. – Drew

0

Es scheint Links klickbar sind (zum Beispiel auf iOS 11.2.x), wenn sie auf ihre eigene Linie gesendet.

In PhP (stellen Sie sicher, dass Sie Twilio SDK haben - zum Beispiel von Komponist installieren.

% Komponist erfordern Twilio/sdk

<?php 
require_once "vendor/autoload.php"; 
use Twilio\Twiml; 

$response = new Twiml(); 
$response->message("Your message without href"); 
$response->message("https://......."); 

echo $response; 
?>