Le plugin SMS fournit 2 brokers pour l'envoi de SMS (cf. Plugin SMS - Manuel d'intégration v1.3.0, v1.4.0) qui sont des points d'extensions simples.
Mais vous pouvez également écrire votre propre implémentation de broker pour l'envoi de SMS. Pour cela, vous devrez déclarer un nouveau point d'extension dans le fichier plugin.xml d'un plugin Ametys. Au besoin, vous serez donc amené à créer un nouveau plugin, suivez alors les instructions de la page Architecture d'un plugin Ametys.
Etape 1: Dans un fichier plugin.xml, commencez par déclarer votre point d'extension et les éventuels paramètres de configuration nécessaires à l'envoi de SMS, comme dans l'exemple ci-dessous:
<feature name="com.mycompany.cms.sms.broker.mybroker">
<config>
<param id="com.mycompany.cms.sms.broker.user" type="string">
<label i18n="false">Identifiant</label>
<description i18n="true">Identifiant</description>
<validation>
<mandatory/>
</validation>
<category i18n="true">plugin.sms:PLUGINS_SMS_SUBSCRIPTION_SERVICE_BROKER_CATEGORY</category>
<group i18n="true">plugin.sms:PLUGINS_SMS_SUBSCRIPTION_SERVICE_SERVICE_CONNECTION_GROUP</group>
<order>1</order>
</param>
<param id="com.mycompany.cms.sms.broker.password" type="password">
<label i18n="false">Mot de passe</label>
<description i18n="false">Mot de passe</description>
<validation>
<mandatory/>
</validation>
<category i18n="true">plugin.sms:PLUGINS_SMS_SUBSCRIPTION_SERVICE_BROKER_CATEGORY</category>
<group i18n="true">plugin.sms:PLUGINS_SMS_SUBSCRIPTION_SERVICE_SERVICE_CONNECTION_GROUP</group>
<order>2</order>
</param>
</config>
<extensions>
<extension point="org.ametys.plugins.sms.broker.Broker"
id="com.mycompany.cms.sms.broker.MyBroker"
class="com.mycompany.cms.sms.broker.MyBroker"
logger="com.mycompany.cms.sms.broker.MyBroker">
</extension>
</extensions>
</feature>
Etape 2: Puis écrire la classe com.mycompany.cms.sms.broker.MyBroker :
public class MyBroker extends LoggerBroker
{
@Override
public void send(Set<String> phoneNumbersList, String message, String listId) throws Exception
{
super.send(phoneNumbersList, message, listId);
// Do it: send SMS to all the phones in the list
}
@Override
public String getPhoneNumberFromStopRequest() throws Exception
{
// Do it ...
}
}
La méthode send est responsable de l'envoi de mail. Faites ici par exemple appel au web service de votre fournisseur pour l'envoi de SMS.
La méthode getPhoneNumberFromStopRequest a pour charge d'extraire le numéro de téléphone souhaitant se désabonner du service depuis la requête HTTP envoyé par le fournisseur (broker). Par exemple, pour Etoile Diese, le numéro est contenu dans le paramètre de requête "num" : http://<monsite.com>/_plugins/sms/stop-sms?num=336xxxxxxxx&txt=STOP
Etape 3: Enfin, sélectionnez votre broker dans le fichier WEB-INF/param/runtime.xml
<org.ametys.plugins.sms.broker.Broker>com.mycompany.cms.sms.broker.MyBroker</org.ametys.plugins.sms.broker.Broker>
Etape 4: Redémarrez le serveur.