Форум программистов, компьютерный форум, киберфорум
HCL Notes: Программирование
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.99/101: Рейтинг темы: голосов - 101, средняя оценка - 4.99
0 / 0 / 0
Регистрация: 18.08.2008
Сообщений: 1,698
1

Vcard + Sms + Lotusscript

23.07.2012, 11:06. Показов 18546. Ответов 19
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет!
Вопрос наверное не совсем по теме.... но все же..
Кто-то пробовал формировать vCard для отправки на мобильник через СМС.
СМС - посылка письма почтой на определенный адрес средствами Lotus.
СМС в принципе доставляются... интересует доставка vCard.
Есть какой-нибудь универсальный формат vCard, понятный для большинства телефонов?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.07.2012, 11:06
Ответы с готовыми решениями:

Lotusscript
Доброго времени суток всем. Возникли некоторые вопросы по ЛС. Вообще он очень похож на бейсик. Но...

Lotusscript Library
Всем здрасте! Есть у кого-нить наработки как получить перечень процедур из библиотеки?

Xpages + Lotusscript
Итак, xPages передовая технология, которую будут развивать. У нас, к сожалению или к счастью, тонны...

Проблема с LotusScript
Такая вот проблема! Как в LotusScript зделать экспорт в файл MS Word содержимого письма? ICQ...

19
0 / 0 / 0
Регистрация: 04.11.2007
Сообщений: 3,019
23.07.2012, 15:16 2
чтож тут сложного то?
обычный текст

Код
BEGIN:VCARD
VERSION:3.0
FN:к.м.н., пр. Василий Иванович Пупкин
N:Пупкин;Василий;Иванович;пр.,к.м.н.
ORG:Рога и Копыта
URL:http://ru.wikipedia.org/
EMAIL;TYPE=INTERNET:vasya.pupkin@example.com
END:VCARD
0
0 / 0 / 0
Регистрация: 18.08.2008
Сообщений: 1,698
23.07.2012, 15:36 3
Цитата Сообщение от ToxaRat
чтож тут сложного то?
обычный текст

Код
BEGIN:VCARD
VERSION:3.0
FN:к.м.н., пр. Василий Иванович Пупкин
N:Пупкин;Василий;Иванович;пр.,к.м.н.
ORG:Рога и Копыта
URL:http://ru.wikipedia.org/
EMAIL;TYPE=INTERNET:vasya.pupkin@example.com
END:VCARD
Да в том-то и дело что не совсем обычный.
Пробовал я это... приходит обычное текстовое СМС.
А хочется полноценное сообщение, с возможностью сохранения карточки.
Думаю кроме тела СМС надо еще что-то указывать... возможно в теме письма
0
0 / 0 / 0
Регистрация: 04.11.2007
Сообщений: 3,019
23.07.2012, 16:04 4
скинь со своего телефона контакт на емейл и глянь что пришло
может это файл .vcf а может это сообщенение в MIME
0
0 / 0 / 0
Регистрация: 18.08.2008
Сообщений: 1,698
23.07.2012, 16:52 5
ну скорее всего придет вложение. Но не уверен что в СМС это сработает :(

Добавлено: проверил... Да.... с мобильного отсылается файл.
0
0 / 0 / 0
Регистрация: 18.08.2008
Сообщений: 1,698
23.07.2012, 17:59 6
Всем спасибо. Вопрос решен
0
0 / 0 / 0
Регистрация: 17.10.2008
Сообщений: 506
24.07.2012, 10:39 7
Цитата Сообщение от NickProstoNick
Всем спасибо. Вопрос решен
как решили то? :(
0
0 / 0 / 0
Регистрация: 18.08.2008
Сообщений: 1,698
24.07.2012, 10:57 8
Цитата Сообщение от dymat
как решили то? :(
Не уверен что решено правильно, но у меня работает
Формируется vCard как указывали выше.
Затем сообщение кодируется в HEX и отправляется. HEX длинной 4 символа. В начало дописывается недостающее кол-во "0"
Ну и собственно отправляется.
Протестировал на HTC - карточка принимается нормально.
Думаю на всех смартах будет работать.
На обычных телефонах - не получается :(
0
1 / 1 / 0
Регистрация: 04.08.2006
Сообщений: 2,950
20.09.2012, 09:36 9
Цитата Сообщение от NickProstoNick
Не уверен что решено правильно, но у меня работает
Формируется vCard как указывали выше.
Затем сообщение кодируется в HEX и отправляется. HEX длинной 4 символа. В начало дописывается недостающее кол-во "0"
Ну и собственно отправляется.
Протестировал на HTC - карточка принимается нормально.
Думаю на всех смартах будет работать.
На обычных телефонах - не получается
Пример можете привести - если не секрет
0
0 / 0 / 0
Регистрация: 18.08.2008
Сообщений: 1,698
20.09.2012, 10:58 10
Цитата Сообщение от Morpheus
Пример можете привести - если не секрет
"причесанного" кода нет.. так.. наброски


Код
    txt = _
{BEGIN:VCARD} + Chr(13) + Chr(10) +_
{VERSION:2.1} + Chr(13) + Chr(10) +_
{FN:J. Doe} + Chr(13) + Chr(10) +_
{N:Doe; J;;;} + Chr(13) + Chr(10) +_
{TEL;CELL;WORK:+440444555666} + Chr(13) + Chr(10) +_
{ORG:Рога и копыта} + Chr(13) + Chr(10) +_
{END:VCARD}


дополняем пробелами до кратности 60.
чтоб получить максимальное количество пачек
While (Len(txt) Mod 60 ) <> 0
txt = txt & " "
Wend

подготавливаем пачки
ReDim rez( ( Len(txt) / 60 ) - 1 )

заполняем пачки
For i = 0 To UBound(rez)

s = ""
tmp = FullTrim( Mid( txt, (60*i + 1), 60 ) )

Конвертируем текст посылки в HEX
For j =1 To Len( tmp )

h = Mid$(tmp, j, 1)
h = Hex$( Uni( h ) )
h = Right$("0000" & h , 4)
s = s & h

Next

s = <идентификатор пачки> & <количество сообщений в пачке> & <номер сообщения в пачке> & s

rez( i ) = s

Next
<идентификатор пачки>, <количество сообщений в пачке> , <номер сообщения в пачке> - формат этих параметров нужно узнавать у мобильного оператора
Длинна 60 символов - вычислял опытным путем
Если в карточке не планируется русских символов - думаю переводить в HEX не обязательно

Теперь собственно отсылка.
Все пачки сообщений отсылаются как обычные письма.

Код
    Set docSMS = db.Createdocument()

Call docSMS.Replaceitemvalue("Form", "Memo" )
Call docSMS.ReplaceItemValue( "From", Principal )
Call docSMS.ReplaceItemValue( "Principal", Principal )
Call docSMS.ReplaceItemValue( "InetFrom", Principal )
Call docSMS.ReplaceItemValue( "SMTPOriginator", Principal )

docSMS.SendTo = ArrayAppend(docSMS.SendTo, <адресаты> )

Call docSMS.ReplaceItemValue( "Subject", "SMS:VCARD" )

ТУТ код формирования посылок. Результат в tmp
Set rt = docSMS.Createrichtextitem("body")

For i = 0 To UBound(tmp)

rt.Values =     tmp(i)

Call docSMS.Send(False)

Next
Principal - это псевдоним либо номер, короткий номер который увидит адресат.
<адресат> - <полный номер телефона>@<шлюз мобильного оператора>

Ну вот как-то так
0
1 / 1 / 0
Регистрация: 01.10.2006
Сообщений: 615
21.09.2012, 04:45 11
While (Len(txt) Mod 60 ) <> 0

улыбнуло
0
0 / 0 / 0
Регистрация: 18.08.2008
Сообщений: 1,698
23.09.2012, 11:24 12
Цитата Сообщение от Kee_Keekkenen
While (Len(txt) Mod 60 ) <> 0

улыбнуло
И что веселого?
0
0 / 0 / 0
Регистрация: 15.05.2009
Сообщений: 1,454
23.09.2012, 11:30 13
возможно, в связи с наличием function Space проще подсчитать кол-во необходимых пробелов, а не вычислять в цикле остаток от деления на 60.
0
0 / 0 / 0
Регистрация: 18.08.2008
Сообщений: 1,698
23.09.2012, 12:19 14
Цитата Сообщение от OKEN
возможно, в связи с наличием function Space проще подсчитать кол-во необходимых пробелов, а не вычислять в цикле остаток от деления на 60.
Это конечно хорошая функция, но не известно сколько надо добавить пробелов.
Длинна сообщения может быть 30 символов, 10, 50, 110 и т.д.
Конечно можно заложиться на символов 500, но зачем?
А так я точно знаю сколько пачек получу и не важно сколько символов на входе. Лишнего не будет точно.
0
0 / 0 / 0
Регистрация: 19.04.2009
Сообщений: 2,219
23.09.2012, 12:35 15
Имеется ввиду, что проще

LotusScript
1
txt = txt & Space(Len(txt) Mod 60)
0
0 / 0 / 0
Регистрация: 18.08.2008
Сообщений: 1,698
23.09.2012, 12:37 16
Цитата Сообщение от nvy
Имеется ввиду, что проще

LotusScript
1
txt = txt & Space(Len(txt) Mod 60)
я тоже так думал, но это не правильно

Потому как при 50 символах получается клеить будем 84, а надо 10

Правильно так:

LotusScript
1
txt = txt & Space( Fix( (100 - (Len(txt) Mod 60) ) * (60/100) ) )
Ну это так.. на вскидку... и как по мне - не очень читабельно
0
0 / 0 / 0
Регистрация: 19.04.2009
Сообщений: 2,219
23.09.2012, 13:23 17
А если так?

LotusScript
1
txt = txt & Space(60 - Len(txt) Mod 60)
0
0 / 0 / 0
Регистрация: 18.08.2008
Сообщений: 1,698
23.09.2012, 13:39 18
Цитата Сообщение от nvy
А если так?

LotusScript
1
txt = txt & Space(60 - Len(txt) Mod 60)
Пример:

Код
60-(50 mod 60) = -23
круто
0
0 / 0 / 0
Регистрация: 19.04.2009
Сообщений: 2,219
23.09.2012, 14:16 19
Ну, не знаю. У меня такой агент выводит 10

LotusScript
1
2
3
Sub Initialize
MsgBox CStr(60 - 50 Mod 60)
End Sub
Добавлено
Результат операции A Mod B по определению не должен превышать B.
Чтобы не добавлять 60 пробелов можно так:

LotusScript
1
2
rest = Len(txt) Mod 60
If rest > 0 Then txt = txt & Space(60 - rest)
0
0 / 0 / 0
Регистрация: 18.08.2008
Сообщений: 1,698
23.09.2012, 14:45 20
Цитата Сообщение от nvy
Ну, не знаю. У меня такой агент выводит 10

LotusScript
1
2
3
Sub Initialize
MsgBox CStr(60 - 50 Mod 60)
End Sub
Да... что-то я тупонул.
Ну в общем если уж на то пошло - то можно написать так... чтоб всем нравилось
Это

LotusScript
1
2
3
4
5
6
    While (Len(txt) Mod 60 ) <> 0
txt = txt & " "
Wend
 
подготавливаем пачки
ReDim rez( ( Len(txt) / 60 ) - 1 )
заменить на это

LotusScript
1
2
txt = txt & Space(60)
ReDim rez( ( Len(txt) \ 60 ) + 1 )
А вообще - я сразу написал, что "причесанного" кода нет.. так.. наброски
Не нравится - не пользуйтесь
0
23.09.2012, 14:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.09.2012, 14:45
Помогаю со студенческими работами здесь

Lotusscript *.lss
Доброго времени суток уважаемые форумчане! Прошу строго не судить т.к. я не прогер и попытаюсь...

Webservice lotusscript
никогда не создавал на LS, но тут решил попробовать - задолбался первый же вопрос - подключение...

проверка на Lotusscript
Помогите написать на LotusScript проверку заполнения обязательных полей на форме с выводом...

Enumeration В Lotusscript
Доброе время суток! Продолжаю скромные попытки расширить возможности разработки на LS. На сей...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru