Le framework SAM peut être étendu pour supporter d'autres protocoles de messagerie et d'autre mécanismes de connexion. Pour ajouter le support d'un nouveau protocole ou connexion, une classe doit être définie, soit sous la forme d'une extension C, soit sous la forme d'un script PHP, et un script "usine" doit être créé. La classe doit implémenter toutes les méthodes de la classe SAMConnection, car elle n'hérite pas de la classe SAMConnection. Le script d'usine doit être appelé par le framework SAM pour créer une instance de la classe implémentée. La façon dont SAM choisit quel utilitaire à appeler, est basée sur le protocole spécifié en tant que premier paramètre de l'appel à "connect".
Par défaut, le support interne MQTT sera utilisé si une connexion est spécifiée à un protocole SAM_MQTT ("mqtt") ; pour les autres protocoles, SAM tente d'utiliser l'extension XMS. Pour ajouter le support de protocoles supplémentaires ou pour modifier le comportement par défaut, des entrées doivent être ajoutées dans le php.ini dans la section [sam]. Le liage par défaut est équivalent aux entrées suivantes :
[sam] sam.factory.mqtt=mqtt sam.factory.wmq=xms sam.factory.wmq:client=xms sam.factory.wmq:bindings=xms sam.factory.wpm=xms sam.factory.rtt=xms
SAM_WMQ=wmq
,
SAM_WPM=wpm
, SAM_RTT=rtt
,
SAM_MQTT=mqtt
, etc.
Lors de l'identification du code support à utiliser lors d'un appel à connexion, SAM cherche le nom du protocole dans les entrées du php.ini, puis, invoque un script d'usine nommé sam_factory_xxx.php. Si aucune entrée n'est trouvée, le support par défaut utilisé sera XMS.