Thanks Waqas! I got this far (after adding jid_split function):

if text then
    local username = jid_split(stanza.attr.to);
    module:log("info", "vCard  for %s", username);

    local email; -- nil by default
    local vCardRaw = vcards:get(username);
    if vCardRaw then
        local vcard = st.deserialize(vCardRaw);
        email = vcard:get_child_text("EMAIL");
        module:log("info", "vCard raw %s", vCardRaw);
        text = text .. "\n\n /to:" .. jid_bare(stanza.attr.to) ..
"/from:" .. jid_bare(stanza.attr.from) .. "/";
        if email then
            return send_message_as_email(email, smtp_daemon, text);
        end
    end
end


The *email* var is returning as empty. I try to log out the contents of
vCardRaw, but get this error:


   - fo vCard for nambikawa
   - Mar 21 08:13:45 logspout-a38daf88-1
   
<https://papertrailapp.com/systems/logspout-a38daf88-1/events?centered_on_id=515956445674778632>
    06b7c29f-ef85-483b-a855-e3fcf5a45cfe
   
<https://papertrailapp.com/groups/1313964/events?centered_on_id=515956445674778632&q=program%3A06b7c29f-ef85-483b-a855-e3fcf5a45cfe>
   :  [C]: in function 'format'
   - Mar 21 08:13:45 logspout-a38daf88-1
   
<https://papertrailapp.com/systems/logspout-a38daf88-1/events?centered_on_id=515956445687361539>
    06b7c29f-ef85-483b-a855-e3fcf5a45cfe
   
<https://papertrailapp.com/groups/1313964/events?centered_on_id=515956445687361539&q=program%3A06b7c29f-ef85-483b-a855-e3fcf5a45cfe>
   : idelog.me:offline_email infomod_bosh error Traceback[bosh]:
   /usr/lib/prosody/core/loggingmanager.lua:234: bad argument #2 to 'format'
   (string expected, got table)


What's the best way to inspect the contents of the vCard so I can see if it
has the attributes that I assume it has?


Thanks!!

On Fri, Mar 20, 2015 at 7:33 PM, Waqas Hussain <waqa...@gmail.com> wrote:

> Hey Simon, you have two problems.
>
> 1) jid_bare gives you usern...@example.com. You just want username,
> without the @hostname, so use jid_split
> 2) You don't check for the vCard being nil (i.e., the user has no vCard
> data stored)
>
> Here's what your code could look like:
>
> local username=jid_split(stanza.attr.to);
> module:log("info", "vCard  for %s", username);
>
> local email; -- nil by default
> local vCardRaw=vcards:get(username);
> if vCardRaw then
>   local vcard = st.deserialize(vCardRaw);
>   email = vcard:get_child_text("EMAIL");
> end
>
> --
> Waqas Hussain
>
>
> On Fri, Mar 20, 2015 at 7:19 PM, Simon Hill <simonhill...@gmail.com>
> wrote:
>
>> Hi Matthew, I have not exactly gotten it working and wondered if you had
>> any further thoughts.
>>
>> Must be doing something stupid.
>>
>> In the logs:
>>
>> *info* vCard  for u...@domain.com
>>> [xmpp-1] 2015-03-20T21:59:51.813731734Z mod_bosh
>>>           *error* Traceback[bosh]:
>>> ...sody-modules/mod_offline_email/mod_offline_email.lua:28: attempt to
>>> index local 'vcard' (a nil value)
>>
>>
>> local username=jid_bare(stanza.attr.to);
>> module:log("info", "vCard  for %s", username);
>>
>> local vCardRaw=vcards:get(username);
>> local vcard = st.deserialize(vCardRaw);
>> local email = vcard:get_child_text("EMAIL"); <-- error
>>
>>
>> I haven't succeeded in logging out the contents of the vCard either.
>> Keeps complaining of a nil index. But I am absolutely positive that the jid
>> has the vCard - I see it in the db, and I can view it using Adium and
>> retrieve it using stanza.io.
>>
>> The only other thing I did was add
>>
>> local st = require "util.stanza";
>>
>> Any thoughts on how to debug? Here's a gist of your bastardized code:
>> mod_offline_email.lua
>> <https://gist.github.com/metalaureate/da5f72401651414d551a>
>>
>> Thank you.
>>
>> Si
>>
>>
>> On Friday, March 20, 2015 at 3:28:56 AM UTC-7, Matthew Wild wrote:
>>
>>> On 20 March 2015 at 00:56, Simon Hill <simonh...@gmail.com> wrote:
>>> > I promise to get better at Lua and Prosody - currently I am a noob and
>>> ask a
>>> > lot of stupid questions. Here's my question:
>>> >
>>> > I am trying to add vCard support to mod_offline_email. Zash kindly
>>> > suggested:
>>> >
>>> >> local vcards = module:open_store("vcard");
>>> >>  -- in a hook
>>> >> local vcard = vcards:get(username);
>>> >
>>> >
>>> >>
>>> >> local email = vcards:get_child_text("EMAIL");
>>>
>>> This should be vcard:get_child_text() - vcards is the data store,
>>> vcard is the user's vcard.
>>>
>>> You might also need to deserialize the stanza object before you can
>>> use it though. Run it through st.deserialize():
>>>
>>> local vcard = st.deserialize(vcards:get(username));
>>>
>>> Finally, although what you are doing seems like an obvious feature to
>>> add, and quite simple, I have always refrained from adding it to
>>> mod_offline_email. This is because the user's email address in the
>>> vcard is not verified, they could put anybody's address there. This
>>> would allow your server to be used as an open XMPP->email relay. It's
>>> fine if your vcards are locked down to verified details and can't be
>>> modified directly by the user though.
>>>
>>> Regards,
>>> Matthew
>>>
>>  --
>> You received this message because you are subscribed to the Google Groups
>> "prosody-dev" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to prosody-dev+unsubscr...@googlegroups.com.
>> To post to this group, send email to prosody-dev@googlegroups.com.
>> Visit this group at http://groups.google.com/group/prosody-dev.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>  --
> You received this message because you are subscribed to a topic in the
> Google Groups "prosody-dev" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/prosody-dev/hOD-FzM1pY0/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> prosody-dev+unsubscr...@googlegroups.com.
> To post to this group, send email to prosody-dev@googlegroups.com.
> Visit this group at http://groups.google.com/group/prosody-dev.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"prosody-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to prosody-dev+unsubscr...@googlegroups.com.
To post to this group, send email to prosody-dev@googlegroups.com.
Visit this group at http://groups.google.com/group/prosody-dev.
For more options, visit https://groups.google.com/d/optout.

Reply via email to