I am using dummy messages with user ids to set BotUserData for a particular user, so that the bot can access it elsewhere via the same method.
message.From.Id = someUserId;
message.From.Id = someUserId
someObject = message.GetBotUserData<objectType>("someObject")
The userId is different on each channel (i.e. Skype / Slack use a different namespace). BotFramework currently does not provide a means to link accounts between channels. You could create a user interface that allows users link accounts (for example by generating a token in one channel and having the user type it into another).
<SLACK-USER> Get Link code <SLACK-BOT> Link Code: FSE1-SDF2 <SKYPE-USER> Link account FSE1-SDF2 <SKYPE-BOT> User linked
You'd then want to create your own data store that you can access with the token you provided.