Randall W, dnia 2006-01-20 00:51 napisal:
Hi/
   I'm working on a jabber service (written in perl
using the Net::Jabber modules) and have come to the
point of needing to respond to vCard requests. Google is not helping me out here: The only possibles:
(..)
Can give me a clue or point me to a working example?
I am doing this the simplest way: put you vCard XML into a file (this is actually exact copy of vCard sent by Livedelu a Jobble automated assistant (bot) ;) ):

<vCard xmlns='vcard-temp' prodid="-//HandGen//NONSGML vGen v1.0//EN" version="2.0" >
<FN>Livedelu</FN>
<N>
<GIVEN/>
<MIDDLE/>
<FAMILY/>
</N>
<NICKNAME></NICKNAME>
<BDAY>2005-08-08</BDAY>
<GENDER>Female</GENDER>
<EMAIL>
<USERID/>
<INTERNET/>
</EMAIL>
<ADR>
<HOME/>
<STREET/>
<EXTADR/>
<EXTADD/>
<LOCALITY>Skawina</LOCALITY>
<REGION>malopolska</REGION>
<PCODE>32-050</PCODE>
<CTRY>Poland</CTRY>
<COUNTRY>Poland</COUNTRY>
</ADR>
<ADR>
<WORK/>
<STREET/>
<EXTADR/>
<EXTADD/>
<LOCALITY/>
<REGION/>
<PCODE/>
<CTRY/>
<COUNTRY/>
</ADR>
<ORG>
<ORGNAME>KrwawA UazniA TEAM</ORGNAME>
<ORGUNIT>Jobble Division</ORGUNIT>
</ORG>
<TITLE>Advisor</TITLE>
<ROLE>Public Relations</ROLE>
<URL>http://jobble.uaznia.net</URL>
<DESC/>
<PHOTO>
<TYPE>image/png</TYPE>
<BINVAL>(base64 encoded png image here)</BINVAL>
</PHOTO>
</vCard>

add proper event handling:
$Connection->SetXPathCallBacks(
(.. many other if needed ..)
'/[EMAIL PROTECTED]"get"]/[EMAIL PROTECTED]"vcard-temp"]'           => 
\&InvCardSend,
(.. many other if needed ..)
);

and write a sub sendind your raw XML from file:

sub InvCardSend {
  my $sid = shift;
  my $iq = shift;

  my $from = $iq->GetFrom();
  my $to = $iq->GetTo();
  my $id = $iq->GetID();
  my $type = $iq->GetType();
  my $query = $iq->GetQuery();

  log3("vCard request recived.");

  open(FILEREAD, "< ./vcard.xml");
  my $IQ = new Net::Jabber::IQ();
  $IQ->SetIQ( to => $from,
        from => 'livedelu[ at ]jobble[ dot ]uaznia[ dot ]net',
        id => $id,
        type => 'result');
  $IQ->InsertRawXML(<FILEREAD>);
  $Connection->Send($IQ);

}
(JID antyspammed ;) )

and it works fine, if you want to try just request a vCard from Livedelu :)

--
koniczynek

Reply via email to