Sending message to users not on buddylist

Login to post  Page: « < 1 of 1 > »
04 Aug 2009 - 05:084740
Sending message to users not on buddylist
Hi,

I am using the accjbot.java file from accsdk_win32_1_8_2 and have modified it for my purpose.

In order to know the status of the IM sent to a user, I am checking AccResult in the OnImSendResult method. When trying to send IM to user not on a bot's buddy list (deliberately for testing), the bot program seems to go in an infinite loop logging the error message in logs (when AccResult object's value matches ACC_E_CANNOT_INITIATE_SESSION).

How to prevent the bot from going into loop in this case and make it log the error message (or take any other action on ACC_E_CANNOT_INITIATE_SESSION exception) only once? What is the recommended way to handle success and error codes for sending IMs using AIM Custom Client?


04 Aug 2009 - 13:594745
Sending message to users not on buddylist
Any thoughts anyone?


04 Aug 2009 - 18:584750
Sending message to users not on buddylist
Can I see the code snippet that logs the error in the OnImSendResult
method? This should not be happening.


05 Aug 2009 - 01:244752
Sending message to users not on buddylist
Here is the OnImSendResult method:

	public void OnImSendResult(AccSession arg0, AccImSession arg1, AccParticipant arg2, AccIm arg3, AccResult arg4) {
        if("ACC_S_OK".equals(arg4.name())){
            try {
                LOG.log(Level.INFO, "sent instant message of type: "+arg1.getSessionType().name()+" to: "
                        +arg2.getName()+" msg: "+arg3.getText());
            } catch (AccException e) {
                e.printStackTrace();
            }
        }
        if("ACC_E_CANNOT_INITIATE_SESSION".equals(arg4.name())) {
            try {
                LOG.log(Level.SEVERE, "Failed to send IM to "+arg2.getName());
            } catch (AccException e) {
                e.printStackTrace();
            }
        }
	}


05 Aug 2009 - 02:364753
Hi,
Probably the bot tries to send IM again and again. Is there a way to configure the bot to stop from retrying?
Thanks.


05 Aug 2009 - 12:504755
Sending message to users not on buddylist
Can you send me your code to send the IM to the buddy not on your buddylist?


06 Aug 2009 - 03:454758
Hi,
The code is as below:
package com.aol.notify.aim;
import com.aol.acc.*;
import com.aol.pubt.forc.cfg.PropertyBag;
import java.util.Date;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.PatternSyntaxException;

public class AimSender implements AccEvents {

	AccSession session;
	static boolean running = true;
	String signOffPassword = "please1234";
	Vector<String> regexps = new Vector<String>();
	AccClientInfo info;
    AccPreferences prefs;

	long start = new Date().getTime();
    private static final Logger LOG = Logger.getLogger(AimSender.class.getName());

    public static void main(String[] args) {
		
		if(args.length != 2) {
			System.out.print("usage: java AimSender username password");
			return;
		}
			
		try {
			AimSender a = new AimSender(args[0], args[1]);
            a.msgPump();
            a.info = null;
            a.session = null;
            a.prefs = null;

            System.gc();
            System.runFinalization();

		} catch (AccException e) {
			System.out.println("Main AccException, hr: "+e.errorCode);
			e.printStackTrace();
		}
	}
	
	public AimSender(String username, String password) throws AccException
	{
		// Create main session object
		session = new AccSession();
		
		// Add event listener
		session.setEventListener(this);

        //read key
        String key = AimSender.class.getName() + " " + PropertyBag.getProperty("aim.customclient.dev.key");

		// set key
		info = session.getClientInfo();
		info.setDescription(key);
		
		// set screen name
		session.setIdentity(username);
		
		// setup prefs so anyone can IM us, but not chats or DIMs
		session.setPrefsHook(new Prefs());
		prefs = session.getPrefs();
		prefs.setValue("aimcc.im.chat.permissions.buddies", AccPermissions.RejectAll);
		prefs.setValue("aimcc.im.chat.permissions.nonBuddies", AccPermissions.RejectAll);
		prefs.setValue("aimcc.im.direct.permissions.buddies", AccPermissions.RejectAll);
		prefs.setValue("aimcc.im.direct.permissions.nonBuddies", AccPermissions.RejectAll);
		prefs.setValue("aimcc.im.standard.permissions.buddies", AccPermissions.AcceptAll);
		prefs.setValue("aimcc.im.standard.permissions.nonBuddies", AccPermissions.AcceptAll);

		session.signOn(password);
	}

    private void msgPump() {
        //msg pump
            while( running )
        {
            try {
                AccSession.pump(50);
            } catch (Exception e) {
                e.printStackTrace();
            }

               try {
                Thread.sleep(50);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

        }

    }

    public void sendIM() throws AccException {
        AccBuddyList bl = session.getBuddyList();
        AccImSession imSession = session.createImSession(buddyname-from-buddylist, AccImSessionType.Im);
        AccIm im = session.createIm("yt?", "text/plain");
        if(running) imSession.sendIm(im);
        imSession = session.createImSession(buddyname-not-on-buddylist, AccImSessionType.Im);
        im = session.createIm("yt?", "text/plain");
        if(running) imSession.sendIm(im);
    }


    public void OnImReceived(AccSession session, AccImSession imSession, AccParticipant participant, AccIm im) {
	}

	
	public void OnStateChange(AccSession arg0, AccSessionState arg1, AccResult arg2) {
		if(arg1 == AccSessionState.Online){
            try {
                sendIM();
            } catch (AccException e) {
                e.printStackTrace();
            }
        }
		if(arg1 == AccSessionState.Offline)
		{
			running = false;
		}
		
	}
	
	/** Unimplemented stubs **/
	
	public void OnSessionChange(AccSession arg0, AccSessionProp arg1) {
		// TODO Auto-generated method stub
		
	}
	public void OnIdleStateChange(AccSession arg0, int arg1) {
		// TODO Auto-generated method stub
		
	}
	public void OnInstanceChange(AccSession arg0, AccInstance arg1, AccInstance arg2, AccInstanceProp arg3) {
		// TODO Auto-generated method stub
		
	}
	public void OnLookupUsersResult(AccSession arg0, String[] arg1, int arg2, AccResult arg3, AccUser[] arg4) {
		// TODO Auto-generated method stub
		
	}
	public void OnSearchDirectoryResult(AccSession arg0, int arg1, AccResult arg2, AccDirEntry arg3) {
		// TODO Auto-generated method stub
		
	}
	public void OnSendInviteMailResult(AccSession arg0, int arg1, AccResult arg2) {
		// TODO Auto-generated method stub
		
	}
	public void OnRequestServiceResult(AccSession arg0, int arg1, AccResult arg2, String arg3, int arg4, AccVariant arg5) {
		// TODO Auto-generated method stub
		
	}
	public void OnConfirmAccountResult(AccSession arg0, int arg1, AccResult arg2) {
		// TODO Auto-generated method stub
		
	}
	public void OnReportUserResult(AccSession arg0, AccUser arg1, int arg2, AccResult arg3, int arg4, int arg5) {
		// TODO Auto-generated method stub
		
	}
	public void OnAlertReceived(AccSession arg0, AccAlert arg1) {
		// TODO Auto-generated method stub
		
	}
	public void OnPreferenceResult(AccSession arg0, String arg1, int arg2, String arg3, AccResult arg4) {
		// TODO Auto-generated method stub
		
	}
	public void OnPreferenceChange(AccSession arg0, String arg1, AccResult arg2) {
		// TODO Auto-generated method stub
		
	}
	public void OnPreferenceInvalid(AccSession arg0, String arg1, AccResult arg2) {
		// TODO Auto-generated method stub
		
	}
	public void OnPluginChange(AccSession arg0, AccPluginInfo arg1, AccPluginInfoProp arg2) {
		// TODO Auto-generated method stub
		
	}
	public void OnBartItemRequestPropertyResult(AccSession arg0, AccBartItem arg1, AccBartItemProp arg2, int arg3, AccResult arg4, AccVariant arg5) {
		// TODO Auto-generated method stub
		
	}
	public void OnUserRequestPropertyResult(AccSession arg0, AccUser arg1, AccUserProp arg2, int arg3, AccResult arg4, AccVariant arg5) {
		// TODO Auto-generated method stub
		
	}
	public void OnGroupAdded(AccSession arg0, AccGroup arg1, int arg2, AccResult arg3) {
		// TODO Auto-generated method stub
		
	}
	public void OnGroupRemoved(AccSession arg0, AccGroup arg1, AccResult arg2) {
		// TODO Auto-generated method stub
		
	}
	public void OnGroupMoved(AccSession arg0, AccGroup arg1, int arg2, int arg3, AccResult arg4) {
		// TODO Auto-generated method stub
		
	}
	public void OnBuddyAdded(AccSession arg0, AccGroup arg1, AccUser arg2, int arg3, AccResult arg4) {
		// TODO Auto-generated method stub
		
	}
	public void OnBuddyRemoved(AccSession arg0, AccGroup arg1, AccUser arg2, AccResult arg3) {
		// TODO Auto-generated method stub
		
	}
	public void OnBuddyMoved(AccSession arg0, AccUser arg1, AccGroup arg2, int arg3, AccGroup arg4, int arg5, AccResult arg6) {
		// TODO Auto-generated method stub
		
	}
	public void OnBuddyListChange(AccSession arg0, AccBuddyList arg1, AccBuddyListProp arg2) {
		// TODO Auto-generated method stub
		
	}
	public void OnGroupChange(AccSession arg0, AccGroup arg1, AccGroupProp arg2) {
		// TODO Auto-generated method stub
		
	}
	public void OnUserChange(AccSession arg0, AccUser arg1, AccUser arg2, AccUserProp arg3, AccResult arg4) {
		// TODO Auto-generated method stub
		
	}
	public void OnChangesBegin(AccSession arg0) {
		// TODO Auto-generated method stub
		
	}
	public void OnChangesEnd(AccSession arg0) {
		// TODO Auto-generated method stub
		
	}
	public void OnNewSecondarySession(AccSession arg0, AccSecondarySession arg1, int arg2) {
		// TODO Auto-generated method stub
		
	}
	public void OnSecondarySessionStateChange(AccSession arg0, AccSecondarySession arg1, AccSecondarySessionState arg2, AccResult arg3) {
		// TODO Auto-generated method stub
		
	}
	public void OnSecondarySessionChange(AccSession arg0, AccSecondarySession arg1, int arg2) {
		// TODO Auto-generated method stub
		
	}
	public void OnParticipantJoined(AccSession arg0, AccSecondarySession arg1, AccParticipant arg2) {
		// TODO Auto-generated method stub
		
	}
	public void OnParticipantChange(AccSession arg0, AccSecondarySession arg1, AccParticipant arg2, AccParticipant arg3, AccParticipantProp arg4) {
		// TODO Auto-generated method stub
		
	}
	public void OnParticipantLeft(AccSession arg0, AccSecondarySession arg1, AccParticipant arg2, AccResult arg3, String arg4, String arg5) {
		// TODO Auto-generated method stub
		
	}
	public void OnInviteResult(AccSession arg0, AccSecondarySession arg1, String arg2, int arg3, AccResult arg4) {
		// TODO Auto-generated method stub
		
	}
	public void OnEjectResult(AccSession arg0, AccSecondarySession arg1, String arg2, int arg3, AccResult arg4) {
		// TODO Auto-generated method stub
		
	}
	public void BeforeImSend(AccSession arg0, AccImSession arg1, AccParticipant arg2, AccIm arg3) {
    }

	public void OnImSent(AccSession arg0, AccImSession arg1, AccParticipant arg2, AccIm arg3) {
	}

	public void OnImSendResult(AccSession accSession, AccImSession arg1, AccParticipant arg2, AccIm im, AccResult result) {
        if("ACC_E_USER_NOT_LOGGED_ON".equals(result.name())){
            LOG.log(Level.SEVERE, "Failed to send IM as user not logged on");
        }

        if("ACC_S_OK".equals(result.name())){
            try {
                LOG.log(Level.INFO, "Sent instant message of type: "+arg1.getSessionType().name()+" to: "
                        +arg2.getName()+" msg: "+im.getText());
            } catch (AccException e) {
                e.printStackTrace();
            }
        }
        if("ACC_E_CANNOT_INITIATE_SESSION".equals(result.name())) {
            try {

                LOG.log(Level.SEVERE, "Failed to send IM as user not on buddy list "+arg2.getName());
            } catch (AccException e) {
                e.printStackTrace();
            }
        }
	}

	public void BeforeImReceived(AccSession arg0, AccImSession arg1, AccParticipant arg2, AccIm arg3) {
		// TODO Auto-generated method stub
	}

	public void OnInputStateChange(AccSession arg0, AccImSession arg1, String arg2, AccImInputState arg3) {
		// TODO Auto-generated method stub
		
	}
	public void OnEmbedDownloadComplete(AccSession arg0, AccImSession arg1, AccIm arg2) {
		// TODO Auto-generated method stub
		
	}
	public void OnEmbedUploadComplete(AccSession arg0, AccImSession arg1, AccIm arg2) {
		// TODO Auto-generated method stub
		
	}
	public void OnRateLimitStateChange(AccSession arg0, AccImSession arg1, AccRateState arg2) {
		// TODO Auto-generated method stub
		
	}
	public void OnNewFileXfer(AccSession arg0, AccFileXferSession arg1, AccFileXfer arg2) {
		// TODO Auto-generated method stub
		
	}
	public void OnFileXferProgress(AccSession arg0, AccFileXferSession arg1, AccFileXfer arg2) {
		// TODO Auto-generated method stub
		
	}
	public void OnFileXferCollision(AccSession arg0, AccFileXferSession arg1, AccFileXfer arg2) {
		// TODO Auto-generated method stub
		
	}
	public void OnFileXferComplete(AccSession arg0, AccFileXferSession arg1, AccFileXfer arg2, AccResult arg3) {
		// TODO Auto-generated method stub
		
	}
	public void OnFileXferSessionComplete(AccSession arg0, AccFileXferSession arg1, AccResult arg2) {
		// TODO Auto-generated method stub
		
	}
	public void OnFileSharingRequestListingResult(AccSession arg0, AccFileSharingSession arg1, AccFileSharingItem arg2, int arg3, AccResult arg4) {
		// TODO Auto-generated method stub
		
	}
	public void OnFileSharingRequestXferResult(AccSession arg0, AccFileSharingSession arg1, AccFileXferSession arg2, int arg3, AccFileXfer arg4) {
		// TODO Auto-generated method stub
		
	}
	public void OnAvStreamStateChange(AccSession arg0, AccAvSession arg1, String arg2, AccAvStreamType arg3, AccSecondarySessionState arg4, AccResult arg5) {
		// TODO Auto-generated method stub
		
	}
	public void OnAudioLevelChange(AccSession arg0, AccAvSession arg1, String arg2, int arg3) {
		// TODO Auto-generated method stub
		
	}
	public void OnSoundEffectReceived(AccSession arg0, AccAvSession arg1, String arg2, String arg3) {
		// TODO Auto-generated method stub
		
	}
	public void OnCustomDataReceived(AccSession arg0, AccCustomSession  arg1,  AccParticipant arg2, AccIm arg3)
	{
		// TODO Auto-generated method stub
		
	}
	public void OnCustomSendResult(AccSession arg0, AccCustomSession arg1, AccParticipant arg2, AccIm arg3, AccResult arg4)
	{
		// TODO Auto-generated method stub
		
	}
	public void OnEmbedUploadProgress(AccSession arg0, AccImSession arg1, AccIm arg2, String arg3, AccStream arg4)
	{
		// TODO Auto-generated method stub
		
	}   
	public void OnEmbedDownloadProgress(AccSession arg0, AccImSession arg1, AccIm arg2, String arg3, AccStream arg4)
	{
		// TODO Auto-generated method stub
		
	}
	public void OnDeleteStoredImsResult(AccSession arg0, int arg1, AccResult arg2)
	{
		// TODO Auto-generated method stub
		
	}
	public void OnDeliverStoredImsResult(AccSession arg0,int arg1,AccResult arg2)
	{
		// TODO Auto-generated method stub
		
	}
	public void OnRequestSummariesResult(AccSession arg0,int arg1, AccResult arg2,AccVariant arg3)
	{
		// TODO Auto-generated method stub
		
	}	
	public void OnAvManagerChange(AccSession arg0, AccAvManager arg1, AccAvManagerProp arg2, AccResult arg3)
	{
		// TODO Auto-generated method stub
		
	}
	public void OnLocalImReceived(AccSession arg0, AccImSession arg1, AccIm arg2)
	{
		// TODO Auto-generated method stub
		
	}
	public void OnPluginUninstall(AccSession s, AccPluginInfo p)
	{ 
		// TODO Auto-generated method stub

	}
	public void OnPushBuddyFeedResult(AccSession s, int t, AccResult r, String arg1)
	{
		// TODO Auto-generated method stub

	}
}

Thanks.


06 Aug 2009 - 09:054759
Sending message to users not on buddylist
What are buddyname-from-buddylist and buddyname-not-on-buddylist? I suspect
you are getting into a loop sending IMs to buddies not on your buddy
list... how do you get those two variables?


06 Aug 2009 - 09:264760
Those variables are hardcoded for the purpose of this dev test program.


06 Aug 2009 - 12:314761
Sending message to users not on buddylist
I tried this out in my copy of accjbot and am seeing everything work fine.
Please send me the corewitness log (corewitness plugin is available from
www.gusverdun.com) so I can see whats going wrong for you.

ConnectingACC_S_OK
ValidatingACC_S_OK
TransferringACC_S_OK
NegotiatingACC_S_OK
StartingACC_S_OK
OnlineACC_S_OK
sent instant message of type: Im to: mysntst1 msg:
<HTML><BODY>yt?</BODY></HTML>
sent instant message of type: Im to: mysnttst2 msg:
<HTML><BODY>yt?</BODY></HTML>


12 Aug 2009 - 12:334789
Sending message to users not on buddylist
I did repro this, the problem is that we do not support initiating IMs from
a consumer BOT, only enterprise BOTs.


Login to post  Page: « < 1 of 1 > »