Railo与Railo内部的XMPP / Jabber / Google Talk交谈?

时间:2013-09-03 09:34:00

标签: coldfusion xmpp railo

我已经在coldfusion服务器10中实现了ColdFusion XMPP事件网关,并且谷歌谈话工作得很好。同样的事情我想在Railo服务器上实现,但没有运气找到的东西。

请向“Railo与Railo内部的XMPP / Jabber / Google Talk交谈”提出建议

在coldfusion XMPP事件网关中使用cfc文件

<cfcomponent displayname="EventGateway" hint="Process events from the test gateway and return echo">
    <cffunction name="onIncomingMessage" output="no">
        <cfargument name="CFEvent" type="struct" required="yes">

        <cflog file="#CFEvent.GatewayID#Status" text=" onIncomingMessage; SENDER: #CFEvent.Data.SENDER# MESSAGE:
#CFEvent.Data.MESSAGE# TIMESTAMP: #CFEvent.Data.TIMESTAMP# ">

        <!--- Get the message --->
        <cfset data=cfevent.DATA>
        <cfset message="#data.message#">
        <!--- where did it come from? --->
        <cfset orig="#CFEvent.originatorID#">
        <cfset retValue = structNew()>
        <cfif listcontains("XMPP ", arguments.CFEVENT.GatewayType) gt 0>
            <cfset retValue.BuddyID = orig>
            <cfset retValue.MESSAGE = "echo: " & message>
        <cfelseif arguments.CFEVENT.GatewayType is "Socket">
            <cfset retValue.originatorID = orig>
            <cfset retValue.message = "echo: " & message>
        <cfelseif arguments.cfevent.gatewaytype is "SMS">
            <cfset retValue.command = "submit">
            <cfset retValue.sourceAddress = arguments.CFEVENT.GatewayID>
            <cfset retValue.destAddress = orig>
            <cfset retValue.shortMessage = "echo: " & message>
        </cfif>

        <!--- we can write our script to process like database Query here --->

        <!--- send the return message back --->
        <cfreturn retValue>
    </cffunction>

    <cffunction name="onAddBuddyRequest">
        <cfargument name="CFEvent" type="struct" required="YES">

        <cflock scope="APPLICATION" timeout="10" type="EXCLUSIVE">
            <cfscript>
            // If the name is in the DB once, accept; if it is missing, decline.
            // If it is in the DB multiple times, take no action.
            action="accept";
            reason="Valid ID";
            //Add the buddy to the buddy status structure only if accepted.
            if (NOT StructKeyExists(Application,"buddyStatus")) {
                Application.buddyStatus=StructNew();
            }
            if (NOT StructKeyExists(Application.buddyStatus,CFEvent.Data.SENDER)) {
                Application.buddyStatus[#CFEvent.Data.SENDER#]=StructNew();
            }
            Application.buddyStatus[#CFEvent.Data.SENDER#].status="Accepted Buddy Request";
            Application.buddyStatus[#CFEvent.Data.SENDER#].timeStamp=
            CFEvent.Data.TIMESTAMP;
            Application.buddyStatus[#CFEvent.Data.SENDER#].message=CFEvent.Data.MESSAGE;
            </cfscript>
        </cflock>

        <!--- Log the request and decision information. --->
        <cflog file="#CFEvent.GatewayID#Status" text="onAddBuddyRequest; SENDER: #CFEvent.Data.SENDER# MESSAGE:
#CFEvent.Data.MESSAGE# TIMESTAMP: #CFEvent.Data.TIMESTAMP# ACTION: #action#">

        <!--- Return the action decision. --->
        <cfset retValue = structNew()>
        <cfset retValue.command = action>
        <cfset retValue.BuddyID = CFEvent.DATA.SENDER>
        <cfset retValue.Reason = reason>

        <cfreturn retValue> 
    </cffunction>

    <cffunction name="onAddBuddyResponse">
    </cffunction>

    <cffunction name="onBuddyStatus">
    </cffunction>

    <cffunction name="onIMServerMessage">
    </cffunction>
</cfcomponent>

谢谢,
阿伦

0 个答案:

没有答案