Instructions pour le service mobile Outlook 2007

Paru le 17 avril 2007

Par Paul Shen, Bing He, Yong Zhang, Judy Zhang, Microsoft Corporation

Résumé : Apprenez à créer et à héberger des services Web pour le service mobile Microsoft Office Outlook 2007. Cet article présente l'architecture et le flux de messages du service mobile Outlook (OMS) et décrit les protocoles de communication entre les clients OMS et les services Web. (21 pages imprimées)

S'applique à : Microsoft Office Outlook 2007

Programming for Outlook 2007 Mobile Service (Part 1 of 3) 

Sur cette page

Introduction au service mobile Outlook Introduction au service mobile Outlook
Architecture et flux de messages Architecture et flux de messages
Protocoles de communication Protocoles de communication
Empaquetage des messages mobiles entrants Empaquetage des messages mobiles entrants
 Conclusion Conclusion
 Ressources supplémentaires Ressources supplémentaires

Introduction au service mobile Outlook

Le service mobile Microsoft Office Outlook 2007 (OMS) est le nouveau composant de messagerie et de gestion des informations personnelles développé pour Microsoft Office Outlook 2007. OMS est conçu pour faire d'Outlook le meilleur outil de messagerie et de notification mobile. Avec OMS, les utilisateurs peuvent aisément intégrer les fonctionnalités mobiles d'Outlook à leurs appareils mobiles.

Les fonctionnalités de messagerie mobile proposées par OMS permettent aux utilisateurs d'effectuer les tâches suivantes :

  • Composition de nouveaux messages texte et multimédias dans Outlook

  • Transfert d'éléments Outlook (messages électroniques, réunions et contacts) sous forme de messages texte ou multimédias

  • Reception de réponses provenant d'appareils mobiles et établissement d'une communication bilatérale entre Outlook et les téléphones mobiles

Avec la fonctionnalité de redirection d'éléments fournie par OMS, les utilisateurs peuvent non seulement composer et envoyer des messages texte et multimédias dans Outlook, mais aussi rediriger automatiquement des rappels, des messages électroniques et l'emploi du temps du jour suivant vers un téléphone mobile en définissant de simples conditions. Ils peuvent également envoyer des messages électroniques, rendez-vous et demandes de réunion à des téléphones mobiles et autres adresses de messagerie.

OMS est intégré aux paramètres de compte Outlook, ce qui permet aux utilisateurs de gérer en toute transparence les comptes de messagerie mobile parallèlement aux comptes de messagerie électronique standard. Les numéros de téléphone mobile sont traités comme un type d'adresse, et les utilisateurs peuvent ajouter des destinataires à un message mobile en utilisant AutoComplete ou en sélectionnant des noms directement dans le Carnet d'adresses d'Outlook. Ils peuvent également enregistrer et gérer des messages mobiles dans les dossiers d'Outlook.

Le client OMS, intégré à Outlook, envoie des messages texte et multimédias à un service Web créé et hébergé par des partenaires qui sont soit des opérateurs soit des fournisseurs de service de contenu de message mobile. Le service Web remet ensuite le message à un centre d'opérateurs de service de message texte ou multimédia.

Cet article, le premier d'une série de trois articles, présente OMS et fournit des instructions et des informations de référence qui vous aideront à utiliser le service. Pour consulter les recommandations concernant l'implémentation d'un service Web OMS, consultez l'article Instructions pour le service mobile Outlook 2007 (partie 2 sur 3). Pour obtenir des informations sur le schéma XML concernant les données échangées entre les fournisseurs Web OMS et les clients OMS, consultez l'article Instructions pour le service mobile Outlook 2007 (partie 3 sur 3).

Architecture et flux de messages

L'architecture générale d'OMS consiste en une infrastructure de service client basée sur la technologie de service Web. Le client OMS, intégré à Outlook, code un message mobile sous forme de message SOAP et l'envoie au service Web OMS, où il est ensuite codé et remis à la passerelle de message mobile de l'opérateur. Le message est ensuite remis au téléphone mobile de l'utilisateur par le biais des réseaux sans fil mobiles de l'opérateur. Le service Web OMS est créé et hébergé par un fournisseur de service qui est soit un opérateur de téléphonie mobile soit un agrégateur (fournisseur de contenu Internet, fournisseur d'accès à Internet ou toute autre partie pouvant fournir un service de messagerie mobile). La spécification du service Web OMS et les protocoles de communication entre le client OMS et le service Web sont décrits dans la section Protocoles de communication de cet article.

Les messages transitent entre Outlook et le téléphone mobile du destinataire via le service Web OMS et l'infrastructure de l'opérateur, comme illustré à la figure 1. Les réponses du téléphone mobile du destinataire peuvent être dirigées vers la boîte de réception Outlook, l'appareil mobile de l'expéditeur ou les deux, selon les préférences de l'utilisateur. Afin de remettre les réponses à la boîte de réception d'un utilisateur dans Outlook, le fournisseur de service les empaquette sous la forme de messages SMTP (Simple Mail Transfer Protocol) selon la spécification définie par Microsoft (voir la section Empaquetage de messages électroniques entrants de cet article).

Architecture et flux de messages
Figure 1. Flux de messages pour le service mobile Outlook

Protocoles de communication

Vous devez suivre plusieurs règles lorsque vous développez un service Web OMS. Tout d'abord, le service Web OMS doit suivre la norme WSDL (Web Services Description Language). Ceci permet au client OMS de se connecter au service sans avoir à modifier le code spécifique du service.

Ensuite, le service Web OMS doit prendre en charge les méthodes Web suivantes :

  • string GetServiceInfo() Utilisée pour récupérer les propriétés du service Web OMS.

  • string GetUserInfo(string xmsUser) Utilisée pour récupérer les informations de l'utilisateur.

  • string SendXms(string xmsData) Utilisée pour envoyer des messages mobiles au service Web.

Enfin, le service Web OMS doit suivre les instructions servant à envoyer les messages mobiles au client OMS sous forme de messages électroniques, comme décrit dans la section Empaquetage de messages électroniques entrants de cet article.

Exemple d'une implémentation simple de service Web

L'exemple de code suivant décrit une implémentation simplifiée du service Web OMS. Les méthodes GetUserInfo() et GetServiceInfo() renvoient des informations et le code d'erreur approprié. Les informations et codes d'erreur qui doivent être renvoyés sont enregistrés sous forme de fichiers XML. Cet exemple suppose qu'une méthode LoadXmlFromFile(string filename) capable de charger le XML à partir d'un fichier et de renvoyer le résultat sous forme de chaîne a été créée, et qu'une classe privée CUserLogon a été implémentée pour fournir une fonctionnalité de validation des utilisateurs.

C#

[WebService(Namespace="http:
  //schemas.microsoft.com/office/Outlook/2006/OMS")]///<Don't change the namespace!/>
public class OMSService : System.Web.Services.WebService
{
/// <Get service information, such as the capacities of supported services./>
[System.Web.Services.WebMethodAttribute()]
[System.Web.Services.Protocols.SoapRpcMethodAttribute(
  "http: //schemas.microsoft.com/office/Outlook/2006/OMS/GetServiceInfo",
RequestNamespace="http: //schemas.microsoft.com/office/Outlook/2006/OMS",
ResponseNamespace="http: //schemas.microsoft.com/office/Outlook/2006/OMS")]
public string GetServiceInfo()
{
  return LoadXmlFromFile("SampleServiceInfo.xml");
}
/// <Get user information including SMTP address and mobile
phone number./>
[System.Web.Services.WebMethodAttribute()]
[System.Web.Services.Protocols.SoapRpcMethodAttribute(
  "http: //schemas.microsoft.com/office/Outlook/2006/OMS/GetUserInfo",
RequestNamespace="http: //schemas.microsoft.com/office/Outlook/2006/OMS",
ResponseNamespace="http: //schemas.microsoft.com/office/Outlook/2006/OMS")]
public string GetUserInfo(
string xmsUser)
{
  if (!m_schemaProvider.FValidXml(xmsUser, “xmsUserSchema.xsd”))
  {
    return LoadXmlFromFile("SchemaError.xml");
  }
  CUserLogon usrLogon = new CUserLogon(xmsUser);
  if (!usrLogon.FLogon())
  {
    return LoadXmlFromFile("LogonFailed.xml");
  }
  return LoadXmlFromFile("SampleUserInfo.xml");
  }
/// <Send SMS or MMS message data to specific recipients/>
[System.Web.Services.WebMethodAttribute()]
[System.Web.Services.Protocols.SoapRpcMethodAttribute(
  "http: //schemas.microsoft.com/office/Outlook/2006/OMS/SendXms",
RequestNamespace="http: //schemas.microsoft.com/office/Outlook/2006/OMS",
ResponseNamespace="http: //schemas.microsoft.com/office/Outlook/2006/OMS")]
public string SendXms(string xmsData)
{
  if (!m_schemaProvider.FValidXml(xmsUser, "xmsDataSchema.xsd"))
  {
    return LoadXmlFromFile("SchemaError.xml");
  }
  CUserLogon usrLogon = new CUserLogon(xmsData);
  if (!usrLogon.FLogon())
  {
    return LoadXmlFromFile("LogonFailed.xml");
  }
  return LoadXmlFromFile("SampleResponse.xml");
  }
// <Load XML file />
private string LoadXmlFromFile(string strFile)
{
  // ...
}
private CSchemaProvider m_schemaProvider;// Helps validate XMS schemas
}; //OMSService
// Extract user logon information from XML string and process logon validation
private class CUserLogon
{
  // ....
};
// Cache schema validators
private class CSchemaProvider
{
  // ....
};
      

Les sections suivantes décrivent en détail les méthodes de service Web OMS et incluent un exemple de code et des exemples de chaînes au format XML (serviceInfo, userInfo et xmsResponse) qui s'échangent entre ces méthodes. Le WSDL relatif à ces méthodes Web, ainsi que les schémas des chaînes au format XML qui transitent entre ces méthodes, sont inclus dans le dernier article de cette série, Recommandation pour le service mobile Outlook 2007 (partie 3 sur 3).

Méthode de service Web string GetServiceInfo()

GetServiceInfo() renvoie une chaîne au format XML appelée serviceInfo qui contient les propriétés de base du service Web OMS, telles que les types de service pris en charge, les paramètres des services pris en charge et les types d'authentification.

Le client OMS intégré à Outlook appelle GetServiceInfo() pour récupérer les propriétés d'un service Web OMS lorsqu'un utilisateur établit un nouveau compte ou pour mettre à jour les propriétés de service après que le service Web OMS a été publié. Avec ces propriétés, OMS configure le service Web en tant que fournisseur de service pris en charge du côté client.

L'exemple suivant affiche une chaîne serviceInfo renvoyée par GetServiceInfo().

Exemple de chaîne serviceInfo

Xml

<?xml version="1.0" encoding="utf-16"?>
<serviceInfo xmlns="http://schemas.microsoft.com/office/Outlook/2006/OMS/serviceInfo">
<serviceProvider>ABC Company</serviceProvider>
<serviceUri>http://www.abc.com.cn/OMS3/XMS.asmx</serviceUri>
<signUpPage>http://www.abc.com.cn/ws/xmssignup.aspx/</signUpPage>
<targetLocale>2052</targetLocale>
    <localName>ABC Mobile Service</localName>
    <englishName>ABC Mobile Service</englishName>
    <authenticationType>Other</authenticationType>
    <supportedService>
      <SMS_SENDER maxRecipientsPerMessage="50" maxMessagesPerSend="20" maxSbcsPerMessage="140" 
        maxDbcsPerMessage="70" />
      <MMS_SENDER supportSlide="true" maxRecipientsPerMessage="100" maxSizePerMessage="30000" 
        maxSlidesPerMessage="10" />
    </supportedService>
</serviceInfo>
      

Les développeurs devraient également tenir compte des éléments suivants :

  • La chaîne serviceInfo est transférée sous forme de chaîne Unicode puis codée en tant que UTF-16.

  • La valeur serviceUri est uniquement utilisée pour identifier le service. Si le serviceUri d'un service Web OMS est modifié, le client OMS le traitera comme un nouveau service Web OMS.

  • Pour prendre en charge les messages texte longs, un fournisseur de service peut conférer aux attributs maxSbcsPerMessage et maxDbcsPerMessage de l'élément SMS_SENDER des valeurs qui peuvent être prises en charge par la plupart des modèles utilisés par ses abonnés.

  • Si un service Web OMS définit l'attribut supportSlide de l'élément MMS_SENDER de sa chaîne serviceInfo sur « true » (vrai), ceci indique que le service Web prend en charge le format SMIL (Synchronized Multimedia Integration). Un message qui utilise SMIL est dit être en mode slide. Si un service Web OMS qui ne prend pas en charge SMIL reçoit un message en mode slide, le service Web doit soit signaler une erreur de type « other » (autre) soit convertir le message au mode non-slide.

Méthode de service Web string GetUserInfo(string xmsUser)

Le client OMS intégré à Outlook récupère le numéro de téléphone mobile d'un utilisateur et d'autres informations en appelant GetUserInfo() avec une chaîne xmsUser comme paramètre, c'est-à-dire une chaîne au format XML contenant les informations d'authentification de l'utilisateur, notamment l'ID utilisateur et le mot de passe. GetUserInfo() renvoie une chaîne au format XML appelée userInfo qui contient un élément error dont l'attribut severity est défini sur « failure » (échec).

Les codes d'erreur qui sont généralement renvoyés dans une chaîne userInfo sont reproduits dans le tableau 1.

Tableau 1. Erreurs renvoyées par un appel à GetUserInfo()

Code

Severity

Ok

Neutral

invalidUser

Failure

unregisteredUser

Failure

expiredUser

Failure

Consultez la section « Codes d'erreur OMS » dans l'article Instructions pour le service mobile Outlook 2007 (partie 3 sur 3) pour une liste complète de codes d'erreur qu'un service Web OMS peut envoyer. Notez, toutefois, que le schéma userInfo ne contient pas les éléments enfants content ou recipientList mentionnés dans cette section. En outre, l'attribut severity est facultatif pour une erreur dans une chaîne userInfo, bien qu'il soit nécessaire dans une chaîne xmsResponse. Si aucun attribut severity n'est défini pour un élément error dans une chaîne userInfo, le client OMS suppose que la gravité de l'erreur est « neutral » (neutre).

Remarque
Les développeurs doivent noter que les chaînes xmsUser et userInfo sont transférées sous forme de chaînes Unicode et codées en tant qu'UTF-16.

L'exemple de code suivant illustre une implémentation de GetUserInfo() utilisant un objet XmlTextWriter pour écrire les informations utilisateur et le code d'erreur dans une chaîne au format XML.

Exemple GetUserInfo()

C#

// …
private const string m_sOmsNamespace = "http: //schemas.microsoft.com/office/Outlook/2006/OMS";
public string GetUserInfo(string xmsUser)
{
  StringWriter stringWriter = null;
  XmlTextWriter writer = null;
  try
  {
    // Add code to verify user logon password
    // and retrieve user information.
    // ...
    stringWriter = new StringWriter(new StringBuilder());
    writer = new XmlTextWriter(stringWriter);
    writer.WriteStartElement("userInfo", m_sOmsNamespace);
    writer.WriteStartElement("replyPhone");
    writer.WriteString(**replyPhone value**);
    writer.WriteEndElement();  // </replyPhone>
    writer.WriteStartElement("smtpAddress");
    writer.WriteString(**smtpAddress value**);
    writer.WriteEndElement();  // </smtpAddress>
    writer.WriteStartElement("error");
    writer.WriteAttributeString("code", "ok");  // return "ok"
    if no errors
    writer.WriteEndElement();  // </error>
    writer.WriteEndElement();  // </userInfo>
    return stringWriter.GetStringBuilder().ToString();
  }
  finally
  {
    if (writer != null)
    writer.Close();

    if (stringWriter != null)
    stringWriter.Close();
  }
}
      

Les exemples suivants illustrent des chaînes xmsUser et userInfo.

Exemple de chaîne xmsUser

Xml

<?xml version="1.0" encoding="utf-16"?>
<xmsUser client="Microsoft Office Outlook 12.0" 
  xmlns = "http://schemas.microsoft.com/office/Outlook/2006/OMS">
    <userId>myname</userId>
    <password>mypwd</password>
    <customData/>
</xmsUser>
      

Exemple de chaîne userInfo renvoyée par GetUserInfo() après un appel réussi

Xml

<?xml version="1.0" encoding="utf-16"?>
<userInfo xmlns = "http://schemas.microsoft.com/office/Outlook/2006/OMS">
    <replyPhone>090123456</replyPhone>
      <smtpAddress>userid.spmail@spdomain.com</smtpAddress>
    <error code="ok"/>
</userInfo>
      

Exemple de chaîne userInfo renvoyée après une erreur

Xml

<?xml version="1.0" encoding="utf-16"?>
<userInfo xmlns = "http://schemas.microsoft.com/office/Outlook/2006/OMS">
    <error code="unregistered" severity="failure"/>
</userInfo>
      

Examinons maintenant plus de près les éléments d'une chaîne userInfo. L'élément replyPhone contient le numéro mobile dont s'est servi l'utilisateur pour s'inscrire au service auprès du fournisseur de service. La valeur replyPhone est affichée sur la boîte de dialogue des paramètres de compte d'Outlook comme étant le numéro mobile par défaut de l'utilisateur. Le client OMS obtient la valeur replyPhone en appelant GetUserInfo() lorsque l'utilisateur configure un compte. Le client OMS appelle également GetUserInfo() pour mettre à jour l'élément replyPhone d'un utilisateur lorsqu'il affiche ou modifie le compte sans entrer de numéro mobile ou lorsque le service Web OMS signale au client que les informations de service ont été modifiées par le biais du code d'erreur « serviceUpdate ».

En outre, l'élément replyPhone est utilisé comme numéro de rappel par défaut pour certains marchés tels que la Corée où un numéro de rappel est nécessaire et pris en charge. Pour la Corée, la valeur replyPhone ou tout autre numéro de téléphone que l'utilisateur entre est utilisé comme numéro de rappel lorsqu'un message SMS (Short Message Service) ou MMS (Multimedia Messaging Service) est envoyé.

Enfin, l'élément smtpAddress contient une adresse SMTP unique qui est générée par le fournisseur de service pour chaque abonné. L'adresse SMTP est utilisée par le fournisseur de service pour envoyer des réponses d'un téléphone mobile à Outlook 2007. La création d'adresses SMTP uniques pour chaque abonné est exigée des fournisseurs de service OMS pour empêcher les utilisateurs malveillants d'envoyer des messages indésirables à l'aide de l'adresse SMTP.

Méthode de service Web de string SendXms(string xmsData)

Le client OMS intégré à Outlook 2007 appelle SendXms() pour remettre un message mobile au fournisseur de service. Le contenu du message est intégré à une chaîne au format XML appelée xmsData. Lorsque le fournisseur de service essaie d'envoyer le message, il reçoit une chaîne au format XML appelée xmsResponse qui contient un ou plusieurs éléments error indiquant le succès ou l'échec de la tentative d'envoi du message à chaque destinataire.

Exemple SendXms()

L'exemple de code suivant illustre une implémentation de SendXms() qui utilise un objet XmlTextWriter pour écrire le succès ou l'échec de l'appel dans une chaîne xmsResponse.

C#

// …
private const string m_sOmsNamespace = "http: //schemas.microsoft.com/office/Outlook/2006/OMS";
public string SendXms(string xmsData)
{
  StringWriter stringWriter = null;
  XmlTextWriter writer = null;
  try
  {
    stringWriter = new StringWriter(new StringBuilder());
    writer = new XmlTextWriter(stringWriter);
    writer.WriteStartElement("xmsResponse", m_sOmsNamespace);
    // XML format validation
    if (!m_schemaProvider.FValidXml(xmsData, "xmsDataSchema.xsd"))
    {
      BuildError(writer, "invalidFormat", true /* failure */, "", "");
      return stringWriter.GetStringBuilder().ToString();
    }
    // User validation
    CUserLogon usrLogon = new CUserLogon(xmsData);
    if (!usrLogon.FLogon())
    {
      BuildError(writer, "invalidUser", true /* failure */, "", "");
      return stringWriter.GetStringBuilder().ToString();
    }
    // Add YOUR code for your business logic to send the xmsData
    //to the intended recipients.
    // ...
    // Sent out OK.
    BuildError(writer, "ok", false /* success */, "", "");
    return stringWriter.GetStringBuilder().ToString();
  }
  catch (XmlException ex)
  {
    // Handle exceptions.
    return  "<?xml version=\"1.0\" encoding=\"utf-16\"?>" 
      + " <xmsResponse xmlns=\"http: //schemas.microsoft.com/office/Outlook/2006/OMS\">"
      + " <error code=\"others\" severity=\"failure\"> <content>" 
      + ex.Message + " </content> </error>"
      + "</xmsResponse>";
  }
  finally
  {
  if (writer != null)
    writer.Close();
  if (stringWriter != null)
    stringWriter.Close();
  }
} //end SendXMS
// Build error elements.
private void BuildError(XmlTextWriter wr,
  string errCode,
  bool bFailed,
  string strContent,
  string strRecipients)
{
  wr.WriteStartElement("error");
  wr.WriteAttributeString("code", errCode);
  wr.WriteAttributeString("severity", bFailed ? "failure" : "neutral");

  if (strContent.Length > 0) 
  {
    wr.WriteStartElement("content");
    wr.WriteString(strContent);
    wr.WriteEndElement();  // </content>
  }
  if (strRecipients.Length > 0)
  {
    wr.WriteStartElement("recipientList");
    wr.WriteString(strRecipients);
    wr.WriteEndElement();  // </recipientList>
  }
  wr.WriteEndElement();  // </error>
} //end BuildError
      

xmsData

La chaîne xmsData sert à empaqueter un message texte ou multimédia, ce qui signifie que les messages texte et les messages multimédias partagent le même schéma. Des exemples d'une chaîne xmsData contenant un message au format MMS et d'une chaîne xmsData contenant un message au format SMS sont illustrés ci-dessous.

Exemple d'une chaîne xmsData contenant un message au format SMS

Xml

<?xml version="1.0" encoding="utf-16"?>
<xmsData client="Microsoft Office Outlook 12.0" 
  xmlns = "http://schemas.microsoft.com/office/Outlook/2006/OMS">
    <user>
      <userId>myname</userId>
      <password>mypwd</password>
      <replyPhone>13801391350</replyPhone>
      <customData/>
    </user>
    <xmsHead>
      <scheduled>2005-04-20T14:20:00Z</scheduled>
      <requiredService>SMS_SENDER</requiredService>
      <to>
        <recipient>135xxxx</recipient>
        <recipient>139xxxx</recipient>
      </to>
    </xmsHead>
    <xmsBody format="SMS">
      <content contentType="text/plain" contentId="Att0.txt@AB1B43B2B0594564.B94EF7ABB12B49BA"
        contentLocation="1.txt">(1/2)This is the first SMS message...</content>
      <content contentType="text/plain" contentId="Att1.txt@AB1B43B2B0594564.B94EF7ABB12B49BA"
        contentLocation="2.txt">(2/2)This is the second SMS message...</content>
    </xmsBody>
</xmsData>
      

Exemple d'une chaîne xmsData contenant un message au format MMS

Xml

<?xml version="1.0" encoding="utf-16"?>
<xmsData client="Microsoft Office Outlook 12.0" 
  xmlns = "http://schemas.microsoft.com/office/Outlook/2006/OMS">
    <user>
      <userId>myname</userId>
      <password>mypwd</password>
      <replyPhone>13801391350</replyPhone>
      <customData/>
    </user>
    <xmsHead>
      <scheduled>2005-04-20T14:20:00Z</scheduled>
      <requiredService>MMS_SENDER</requiredService>
      <sourceType>reminder</sourceType>
      <to>
          <recipient>135xxxx</recipient>
          <recipient>139xxxx</recipient>
      </to>
      <subject>My Message</subject>
    </xmsHead>
    <xmsBody format="MMS">
      <mmsSlides>
        <head>
          <meta name="author" content="msOfficeOutlookOms"/>
          <layout>
            <root-layout width="120" height="120" background-color="#ffffff"/>
            <region id="image" left="0" top="0" width="120" height="90"/>
            <region id="text" left="0" top="90" width="120" height="30"/>
          </layout>
        </head>
        <body>
          <par dur="3000">
            <img src="cid:Att1.gif@AB1B43B2B0594564.B94EF7ABB12B49BA" region="image"/>
            <text src="cid:Att0.txt@AB1B43B2B0594564.B94EF7ABB12B49BA" region="text"/>
            <audio src="cid:Att2.mid@AB1B43B2B0594564.B94EF7ABB12B49BA"/>
          </par>
        </body>
      </mmsSlides>
      <content contentType="text/plain" contentId="Att0.txt@AB1B43B2B0594564.B94EF7ABB12B49BA"
        contentLocation="1.txt">This is the text part</content>
      <content contentType="image/gif" contentId="Att1.gif@AB1B43B2B0594564.B94EF7ABB12B49BA"
        contentLocation="106675.gif">/9j/4AAQ ...... AVExISEyccHhcgLikxMC4p</content>
      <content contentType="audio/midi" contentId="Att2.mid@AB1B43B2B0594564.B94EF7ABB12B49BA"
        contentLocation="1898.mid">/wDQjVYUrl ...... GoJ4e8j</content>
  </xmsBody>
</xmsData>
      

Types de contenu pris en charge

Les messages SMS (Short Message Service) prennent en charge le type de contenu « texte/brut ». OMS prend en charge les objets multimédias répertoriés dans le tableau 2 pour les messages MMS (Multimedia Messaging Service). Côté client, OMS convertit les autres types multimédias à ces formats standard selon les besoins.

Tableau 2. Types de contenu pris en charge

Contenu

Type MIME

Description

Texte

texte/brut

Texte brut. Peut être utilisé par les messages SMS et MMS.

Image statique

image/jpeg

96 ppp. Plus petit ou égal à la taille de l'écran mobile défini dans l'élément root-layout de la chaîne xmsData. Codé Base64. Ne s'applique qu'aux messages MMS.

Image multi-frame

image/gif

GIF89a, 96 ppp, maximum de 256 couleurs. Plus petit ou égal à la taille de l'écran mobile défini dans l'élément root-layout de la chaîne xmsData. Codé Base64. Ne s'applique qu'aux messages MMS.

Format audio MIDI

Audio/mid

Format MIDI. Codé Base64. Ne s'applique qu'aux messages MMS.

Format son AMR

Audio/AMR

Format AMR, monocanal, 8 KHz. Codé Base64. Ne s'applique qu'aux messages MMS.

Le service Web OMS est chargé de vérifier si les messages qu'il reçoit dans une chaîne xmsData sont conformes aux restrictions définies par le service, et de prendre les mesures nécessaires ou de renvoyer des erreurs en utilisant les codes d'erreur appropriés.

xmsResponse

SendXms() renvoie une chaîne au format XML appelée xmsResponse qui contient un ou plusieurs éléments error. Comme avec la chaîne userInfo, un élément error dont l'attribut code est défini sur « ok » et l'attribut severity sur « neutral » est utilisé pour indiquer le succès.

L'élément error possède deux éléments enfants : content qui est une chaîne contenant une description ou des paramètres de l'erreur et recipientList qui est une chaîne contenant une liste de destinataires séparés par des points-virgules qui sont affectés par l'erreur.

Au plus, un élément content et un élément recipientList peuvent être définis pour chaque élément d'erreur. L'absence d'élément recipientList signifie que l'erreur s'applique à tous les destinataires.

Chaque code d'erreur possède deux attributs requis : code et severity. Le code d'erreur n'est pas sensible à la casse. Les valeurs severity possibles sont :

  • La valeur « neutral » (neutre) est la valeur par défaut, indiquant une expédition complète ou réussie, ou que le service envoie un message non-error au client OMS.

  • La valeur « failure » (échec) signifie que le message n'a pas été remis à un ou plusieurs destinataires.

Les notes suivantes concernent l'utilisation de l'élément error et de l'attribut severity :

  • Si l'élément error n'est pas inclus dans la chaîne xmsResponse, le client OMS suppose qu'une erreur « failure » est survenue.

  • Si l'élément error sans l'attribut code est inclus dans une chaîne xmsResponse, le client OMS suppose qu'une erreur « failure » inconnue est survenue.

  • Si l'élément error sans l'attribut severity est inclus dans une chaîne xmsResponse, le client OMS suppose que la gravité est « neutral ».

  • Si plusieurs codes d'erreur sont renvoyés, l'erreur possédant la l'attribut severity le plus élevé décide si le client OMS doit créer un rapport de non-remise et l'envoyer à l'utilisateur. Dans le cas d'une ou plusieurs erreurs de type « failure », le client OMS crée un NDR qui signale à l'utilisateur que le message n'a pas été remis.

Voici des exemples de chaînes xmsResponse.

Exemple de chaîne xmsReponse indiquant que le message a été envoyé avec succès

Xml

<?xml version="1.0" encoding="utf-16"?>
<xmsResponse xmlns="http://schemas.microsoft.com/office/Outlook/2006/OMS">
    <error code="ok" severity="neutral"/>
</xmsResponse>
      

Exemple de chaîne xmsReponse avec une erreur de type « échec »

Xml

<?xml version="1.0" encoding="utf-16"?>
<xmsResponse xmlns="http://schemas.microsoft.com/office/Outlook/2006/OMS">
    <error code="perDayMsgLimit" severity="failure">
      <content>20 SMS</content>
      <recipientList>13601391354;13601391388</ecipientList>
    </error>
</xmsResponse>
      

Empaquetage des messages mobiles entrants

Pour autoriser la communication de message mobile bilatérale entre Outlook et un téléphone mobile, le service Web OMS doit intégrer la réponse envoyée d'un téléphone mobile à un message électronique SMTP au format MIME (Multipurpose Internet Mail Extensions) avec une classe de contenu OMS, et envoyer ensuite le message à l'adresse de messagerie désignée par l'utilisateur. Lorsqu’Outlook 2007 reçoit les messages électroniques SMTP, il reconnaît la classe de contenu et la traite comme un message mobile.

La figure 2 et la figure 3 proposent des exemples de réponses SMS et MMS codées en messages électroniques au format MIME. Les sections suivantes décrivent les mesures à prendre pour transformer des messages mobiles en messages électroniques.

En-têtes de message

Lorsque vous codez une réponse dans un message électronique, définissez les en-têtes SMTP comme indiqué dans les sections suivantes pour que le client OMS puisse identifier convenablement les messages électroniques entrants comme messages provenant d'un téléphone mobile.

Content-Class

Définissez la « Content-Class » de l'en-tête du message sur l'une de valeurs suivantes :

  • Classe de contenu des messages SMS : MS-OMS-SMS

  • Classe de contenu des messages MMS : MS-OMS-MMS

Lorsque Outlook reçoit des messages électroniques avec ces classes de contenu, il les reconnaît comme messages texte ou multimédias et affiche leur icône. Si vous ouvrez, transférez ou répondez à ces messages, ils sont automatiquement traités comme des messages mobiles.

Pour vous assurer que le client affiche correctement les messages mobiles entrants sous forme de messages électroniques, définissez le bon CharSet pour tous les en-têtes contenant du texte non ASCII et des parties MIME de type « texte ».

X-MS-Reply-To-Mobile

Ajoutez l'en-tête suivant particulièrement pour transmettre le numéro de l'expéditeur mobile :

X-MS-Reply-Mobile :

L'en-tête doit être un numéro de téléphone mobile valide.

Voici un exemple d'en-tête X-MS-Reply-To-Mobile (les deux premiers chiffres du numéro mobile représentent le code de pays) :

X-MS-Reply-To-Mobile:+8613601391354

À

La valeur du champ À est une adresse de messagerie fournie par l'utilisateur pour recevoir les messages mobiles entrants :

À : someone@example.com

De

La valeur du champ De est l'adresse de messagerie qui est utilisée pour envoyer la réponse. Les fournisseurs de service OMS doivent fournir une adresse SMTP unique à chaque abonné pour l'envoi de réponses. Le champ De doit ressembler à ce qui suit :

De : userid.spmail@spdomain.com

Objet

Si le message électronique de réponse concerne un message SMS entrant, la valeur recommandée du champ Objet est soit les 40 premiers caractères (ou environ) du corps du message SMS, soit la première ligne du message SMS (s'il y a plusieurs lignes dans le corps du message).

Si le message électronique de réponse concerne un message MMS entrant, définissez l'Objet du message électronique comme Objet du message MMS. Étant donné que les messages MMS ne peuvent pas être entièrement affichés dans le volet de visualisation d'Outlook, ajoutez un commentaire à l'Objet du message MMS rappelant aux utilisateurs d'afficher le contenu du message en ouvrant le message comme indiqué dans l'exemple suivant :

Objet du message MMS (Ouvrir le message pour en afficher le contenu)

Corps du message

Message SMS entrant

Pour composer le corps d'un message SMS entrant, comme illustré à la figure 2, créez une partie MIME en texte brut pour le contenu du message SMS en ajoutant les en-têtes suivants :

Content-Type: text/plain; charset=xxxx

Content-Transfer-Encoding: quoted-printable

Exemples de valeurs CharSet valides : « us-ascii » (ASCII) et « gb2312 » (Chinois simplifié). Les fournisseurs de service peuvent également utiliser le type de contenu multipart/alternative et fournir une vue HTML du corps du message.

Figure 2. Exemple de message SMS entrant empaqueté sous forme de message électronique

De : "Mobile Inbound Agent" *incomingmessage@service-provider.com*

À : someone@example.com

Objet : Ceci est un message texte

Date : Lundi 7 novembre 2005 17:52:00 +0800

Content-class: MS-OMS-SMS

X-MS-Reply-to-mobile: +8613601391354

MIME-Version: 1.0

Content-Type: text/plain; charset="gb2312"

Content-Transfer-Encoding: quoted-printable

Ceci est un message texte d'un téléphone mobile répondant à un message texte Outlook.

Message MMS entrant

Lorsque vous composez le corps du message pour les messages MMS entrants, suivez la norme 3GPP pour coder les messages MMS en tant que messages SMTP au format MIME.

Si SMIL est disponible, composez le corps MIME en tant que multipart/related :

Content-Type: multipart/related; type=”application/smil”;

La première partie MIME du fichier SMIL devrait être :

Content-Type: application/smil; name = "mmspresent.smil"

Les parties multimédias du message MMS devraient être codées en tant que parties MIME avec les types de médias correspondants suivant le fichier SMIL.

Si SMIL n'est pas disponible, composez le corps MIME en tant que multipart/mixed :

Content-type: multipart/mixed

Codez les parties multimédias du message MMS en tant que parties MIME avec les types de médias correspondants. La figure 3 illustre un exemple de message MMS codé au format MIME.

Figure 3. Exemple de message MMS entrant empaqueté sous forme de message électronique

De : "Mobile Inbound Agent" *incomingmessage@service-provider.com*

À : someone@example.com

Objet : Ceci est un message multimédia (Ouvrir le message pour en afficher le contenu)

Date : Lundi 7 novembre 2005 17:52:00 +0800

Content-class: MS-OMS-MMS

X-MS-Reply-to-mobile: +8613601391354

MIME-Version: 1.0

Content-Type: multipart/related; type=”application/smil”;

boundary="--------------Boundary=_thisisboundary"

Ceci est un message en plusieurs parties au format MIME.

--------------Boundary=_thisisboundary

Content-Type: application/smil; name="mmspresent.smil"

Content-Location: ”mmspresent.smil”

Content-Transfer-Encoding: Base64

PHNtaWw+… 1pbD4=

--------------Boundary=_thisisboundary

Content-Type: text/plain; name="textpart.txt"

Content-Transfer-Encoding: Base64

Content-Location: textpart.txt

6Zi/5YWs5Y+45rOV5b6L5biI6IyD5Zu057uV6YGT6LCi

--------------Boundary=_thisisboundary

Content-Type: image/gif; name="imagepart.gif"

Content-Transfer-Encoding: Base64

Content-Location:imagepart.gif

R0lGODlheABaAPf/…BDQi6j4uQAxwcixRzZErI5ROjfvSHJcmRMGBAAOw==

--------------Boundary=_thisisboundary

Content-Type: audio/midi; name="audiopart.mid"

Content-Transfer-Encoding: Base64

Content-Location: audiopart.mid

TVRoZAAAAAY…XBDfwA/fwA6f4dAOgAAPwAAQwAA/y8A

--------------Boundary=_thisisboundary

Sécurité de connexion

Pour protéger les informations lors de leur transfert sur Internet, les services Web OMS doivent prendre en charge le chiffrement SSL (Secure Socket Layer). SSL peut être utilisé pour établir des connexions plus sécurisées sur des réseaux non fiables tels qu'Internet. SSL autorise le chiffrement et le déchiffrement de messages échangés entre le client et le serveur, contribuant ainsi à les protéger contre la lecture durant le transfert.

Conclusion

Cet article présente l'architecture du service Web OMS et définit et explique les interfaces entre le service Web OMS et le client OMS. Pour obtenir des instructions sur la manière façon d'héberger un service Web OMS, consultez l'article Instructions pour le service mobile Outlook 2007 (partie 2 sur 3). Pour obtenir le schéma XML et WSDL pour les services Web OMS, consultez l'article Instructions pour le service mobile Outlook 2007 (partie 3 sur 3).

Ressources supplémentaires

Pour plus d'informations, consultez les ressources suivantes :