Система мгновенных сообщений с произвольным содержанием
В рабочей сессии на Wolfram Desktop, загрузите пакет, который создает мгновенный обмен сообщениями через демо-канал ( "WIM") и начните получать сообщения через данный канал.
![Click for copyable input](assets.ru/instant-messaging-with-arbitrary-content/In_34.png)
Needs["DemoChannels`WIM`"]
Загрузите пакет, который создает демо-канал для мгновенного обмена сообщениями( "WIM") и начните прослушивать сообщения.
![Click for copyable input](assets.ru/instant-messaging-with-arbitrary-content/In_35.png)
channel = CreateWIMChannel[]
![](assets.ru/instant-messaging-with-arbitrary-content/O_38.png)
![Click for copyable input](assets.ru/instant-messaging-with-arbitrary-content/In_36.png)
listener = ChannelListen[channel]
![](assets.ru/instant-messaging-with-arbitrary-content/O_39.png)
Отправьте себе мгновенное сообщение, и оно отобразится в новом диалоговом окне.
![Click for copyable input](assets.ru/instant-messaging-with-arbitrary-content/In_37.png)
ChannelSend["WIM", "Hi there."]
![](assets.ru/instant-messaging-with-arbitrary-content/O_40.png)
![](assets.ru/instant-messaging-with-arbitrary-content/O_41.png)
Прикрепите документ к сообщению.
![Click for copyable input](assets.ru/instant-messaging-with-arbitrary-content/In_38.png)
ChannelSend["WIM", {"Sending a notebook.", InputNotebook[]}]
![](assets.ru/instant-messaging-with-arbitrary-content/O_42.png)
![](assets.ru/instant-messaging-with-arbitrary-content/O_43.png)
Другие пользователи могут посылать вам мгновенные сообщения с помощью ссылки на ваш канал.
![Click for copyable input](assets.ru/instant-messaging-with-arbitrary-content/In_39.png)
yourWIM = $WolframID <> ":WIM"
![](assets.ru/instant-messaging-with-arbitrary-content/O_44.png)
![Click for copyable input](assets.ru/instant-messaging-with-arbitrary-content/In_40.png)
ChannelSend[yourWIM, "hello"]
![](assets.ru/instant-messaging-with-arbitrary-content/O_45.png)
Либо на ваш WIM URL.
![Click for copyable input](assets.ru/instant-messaging-with-arbitrary-content/In_41.png)
listener["URL"]
![](assets.ru/instant-messaging-with-arbitrary-content/O_46.png)
![Click for copyable input](assets.ru/instant-messaging-with-arbitrary-content/In_42.png)
listener["URL"];
ChannelSend[%, "another message"]
![](assets.ru/instant-messaging-with-arbitrary-content/O_47.png)
Любой пользователь может также послать вам сообщение через веб-браузер (или любой другой клиент HTTP), сделав запрос HTTP на следующий URL.
![Click for copyable input](assets.ru/instant-messaging-with-arbitrary-content/In_43.png)
URLBuild[listener["URL"], {"operation" -> "send",
"Message" -> "yet another message"}]
![](assets.ru/instant-messaging-with-arbitrary-content/O_48.png)
![Click for copyable input](assets.ru/instant-messaging-with-arbitrary-content/In_44.png)
URLBuild[listener["URL"], {"operation" -> "send",
"Message" -> "yet another message"}];
URLFetch[%]
![](assets.ru/instant-messaging-with-arbitrary-content/O_49.png)
Для того, чтобы ответить на входящие сообщения от других пользователей, необходимо разрешить связь через каналы пользователей.
![Click for copyable input](assets.ru/instant-messaging-with-arbitrary-content/In_45.png)
Unprotect[$AllowExternalChannelFunctions];
$AllowExternalChannelFunctions = True;
Приостановите прослушивание и восстановите настройки безопасности.
![Click for copyable input](assets.ru/instant-messaging-with-arbitrary-content/In_46.png)
RemoveChannelListener[listener]
![](assets.ru/instant-messaging-with-arbitrary-content/O_50.png)
![Click for copyable input](assets.ru/instant-messaging-with-arbitrary-content/In_47.png)
$AllowExternalChannelFunctions = False;
Protect[$AllowExternalChannelFunctions];