SMS to speech

# This script waits for an incoming sms, reads its 
# content and shows it inside a pop-up note 
# NOTE: PyS60 version 1.3.14 or higher is needed to run this script.  
import inbox 
import e32 
import audio  
#create a function that does the reading of the content of the sms  
def read_sms(id):     
e32.ao_sleep(0.1)     
# read the content out of the message that has just arrived     
sms_text = i.content(id)     
# the phone speaks out the text that just arrived by sms (you can hear it through the loudspeakers of your phone)     
audio.say(sms_text)  
# create an instance of the inbox() class      
i=inbox.Inbox() 
print "send now sms to this phone" 
# put the phone into waiting stage to wait for an incoming message 
i.bind(read_sms) 

Text to speech

# This script performs a query with a single-field dialog (text input field) # and lets the phone speak out the text (text to speech) that the users have typed in  # NOTE: this script runs only with Python S60 version 3.1.14 or above # NOTE: this script doesn't work on all S60 phones neccessarily. Check your phone model if it has text to speech capability at all   # import the module called audio import appuifw import audio  # trigger a text input-field to let the user type a word text = appuifw.query(u"Type few words:", "text") # the phone speaks out the text that you have just typed (you can hear it through the loudspeakers of your phone) audio.say(text)

Sending MMS

# this script lets you send an mms to another phone including text and an image  import appuifw import messaging  # create text input field data = appuifw.query(u"Type your name:", "text")  # define the mobile number here where to send the MMS nbr = "123456" # change the mobile number here  # define the text that the sms shall contain txt = u"Greetings from:" +data   # image attachment: You must have an picture already available with the name picture1.jpg # inside the folder called Images on your memory card. ('e:\\Images\\picture1.jpg')  # otherwise the script won't work. (use video or sound file instead of image)  # send out the mms; include the mobile number, the text and the attachement to be sent messaging.mms_send(nbr, txt, attachment='e:\\Images\\picture1.jpg')  # confirm with a pop-up note that the sms has been sent out appuifw.note(u"MMS sent", "info")

Receiving SMS

# This script waits for an incoming sms, reads its # content and shows it inside a pop-up note # NOTE: PyS60 version 1.3.1 or higher is needed to run this script.  import inbox, appuifw, e32  def message_received(msg_id):         box = inbox.Inbox()         sms_text = box.content(msg_id)          appuifw.note(u"sms content: " + sms_text , "info")         app_lock.signal()  box = inbox.Inbox() box.bind(message_received)  print "Waiting for new SMS messages.." app_lock = e32.Ao_lock() app_lock.wait() print "Message handled!"

Pop-up Notes

# This script performs notes (pop-up notes) of different types: info, error, conf # It uses the .note() function of the appuifw module # appuifw.note(label, type)  # import the application user interface framework module import appuifw  # info: appuifw.note(u"Hello", "info")  # error: appuifw.note(u"file not found", "error")  # conf: appuifw.note(u"upload done", "conf")

Query with Single Field Dialog

# This script performs a query with a single-field dialog, each with a # different input type. # It uses the .query() function of the appuifw module   # import the application user interface framework module import appuifw   # text: # create a single-field dialog (text input field):  appuifw.query(label, type) data = appuifw.query(u"Type a word:", "text") print data  # number: # create a single-field dialog (number input field):  appuifw.query(label, type) data = appuifw.query(u"Type a number:", "number") print data  # date: # create a single-field dialog (date input field):  appuifw.query(label, type) data = appuifw.query(u"Type a date:", "date") print data  # time: # create a single-field dialog (time input field):  appuifw.query(label, type) data = appuifw.query(u"Type a time:", "time") print data  # code: # create a single-field dialog (code input field):  appuifw.query(label, type) data = appuifw.query(u"Type a code:", "code") print data  # query: # create a single-field dialog (question):  appuifw.query(label, type) if appuifw.query(u"Are you ok:", "query") == True:     print "you pressed ok" else:     print "you pressed cancel" 

Tent Input Example

# This script performs a query with a single-field dialog (text input field) # and displays the users input as a pop-up note    # 1. import the application user interface framework module import appuifw  # 2. , 3. create a text input field:  appuifw.query(label, type) and variable data = appuifw.query(u"Type a word:", "text")  # 4. create a pop-up note: appuifw.note(label, type) appuifw.note(u"The typed word was: " + data, "info")    """ detailed description:  1. we import the "appuifw" module to handle UI widgets like text input fields and    pop-up notes etc. 2. we create a single-field dialog (text input field) using the .query() function    of the appuifw module.    we include in the brackets 2 parameters:    - label: as label we put the text u"Type a word:" (the u must be there because             the phone understands only text declared as unicode, the high commas             must be there because label must be given as a string)    - type: as type we put "text". It declares the input field as text type            (other possible types: "number", "date", "time", "query", "code")    -> separate the the two parameters with a comma. 3. We create a variable called data, and by putting data = appui... we write    the result of the text input field into this variable    (after user has typed something when he/she runs the script)  4. We create a pop-up note using the .note() function of the appuifw module.      we include in the brackets the 2 parameters:    - label: as label we put the text u"The typed word was: " + data              This is the text that will appear in the pop-up note. Again the text             must be given as a string in highcommas.             But our pop-up note shall also inculde the result that the user             has typed in, therefore we add the content of our variable data to our label             string by writing + data (adding the content of a variable to a string)                - type: as type we put "info". It declares the pop-up note as info. This puts            an exclamationmark in the pop-up note (other possible types: "error","conf")    -> again, separate the the two parameters with a comma.  """

Send SMS 2 users (description)

# this script lets you send an sms to 2 users at the same time.   # import the messaging module import appuifw import messaging  # create text input field data = appuifw.query(u"Type your name:", "text")  # define the mobile numbers here nbr1 = "123456"  nbr2 = "234567"  # define the text that the sms shall contain txt = u"Greetings from:" +data  # create a query with type: "query" -> appuifw.query(label, type) # by using an if statement one can check whether the user has pressed "ok" -> True or "cancel" -> False if appuifw.query(u"Send message to your 2 friends","query") == True:     # send out the sms; include the mobile number and the text to be sent     messaging.sms_send(nbr1, txt)     messaging.sms_send(nbr2, txt)          # confirm with a pop-up note that the sms has been sent out     appuifw.note(u"Messages sent", "info") else:     # in case the user had pressed "cancel", send a pop-up note that the messages have not been sent out     appuifw.note(u"Well, your Messages are not sent then", "info")

RemoveRelated Message

Removes the relationship between two entity instances as defined by the target classes listed below. For example, remove the relationship between an invoice and a contact.

Remarks

To use this message, pass an instance of the RemoveRelatedRequest class as the request parameter in the Execute method.

To perform this action, the caller must have access rights on the entity instance specified in the request class. For a list of required privileges, see RemoveRelated Privileges.

The RemoveRelated and SetRelated messages support all types of relationships, including one-to-many and many-to-many.RemoveRelated and SetRelated can also be used with custom entities.



//# The following code example shows how to use the RemoveRelated message.

// Set up the CRM service.
CrmAuthenticationToken token = new CrmAuthenticationToken();
// You can use enums.cs from the SDK\Helpers folder to get the enumeration for Active Directory authentication.
token.AuthenticationType = 0;
token.OrganizationName = "AdventureWorksCycle";

CrmService service = new CrmService();
service.Url = "http://:/mscrmservices/2007/crmservice.asmx";
service.CrmAuthenticationTokenValue = token;
service.Credentials = System.Net.CredentialCache.DefaultCredentials;

// Create the target object for the request.
TargetRelatedLeadToAccount target = new TargetRelatedLeadToAccount();

// AccountId is the GUID of the account to be related to the lead.
target.AccountId = new Guid("D3652E9C-D328-4CA1-B284-1215C441AD94");

// LeadId is the GUID of the lead to be related to the account.
target.LeadId = new Guid("9DAEE309-A3D6-470C-80E2-DDC657BAFC16");

// Create the request object.
RemoveRelatedRequest remove = new RemoveRelatedRequest();

// Set the properties of the request object.
remove.Target = target;

// Execute the request.
RemoveRelatedResponse related = (RemoveRelatedResponse)service.Execute(remove);




Convert a Dynamic Entity to a System Entity

//# Convert a Dynamic Entity to a System Entity
using System;
using System.Reflection;

using CrmSdk;
using Microsoft.Crm.Sdk.Utility;

namespace Microsoft.Crm.Sdk.HowTo
{
public class ConvertDynamicToCore
{
static void Main(string[] args)
{
// TODO: Change the server URL and organization to match your Microsoft
// Dynamics CRM Server and Microsoft Dynamics CRM organization.
ConvertDynamicToCore.Run("http://localhost:5555", "CRM_SDK");
}

public static bool Run(string crmServerUrl, string orgName)
{
// Create an account dynamic entity.
DynamicEntity accountDynamicEntity = new DynamicEntity();

//Set a few account properties.
StringProperty name = new StringProperty();
name.Name = "name";
name.Value = "Fabrikam Inc.";

StringProperty accountnumber = new StringProperty();
accountnumber.Name = "accountnumber";
accountnumber.Value = "AZ1200";

Picklist plist = new Picklist();
plist.name = "UPS";
plist.Value = 2;

PicklistProperty shippingmethodcode = new PicklistProperty();
shippingmethodcode.Name = "address1_shippingmethodcode";
shippingmethodcode.Value = plist;

accountDynamicEntity.Properties = new Property[] { name, accountnumber, shippingmethodcode };
accountDynamicEntity.Name = EntityName.account.ToString();

//Create a strongly typed account entity to copy the dynamic entity into.
account coreAccount = new account();

//Convert the dynamic entity to a strongly typed business entity.
coreAccount = (account)Convert(accountDynamicEntity);

Console.WriteLine("\n|Core Account Attributes\n|=======================");
Console.WriteLine("|name: {0}", coreAccount.name);
Console.WriteLine("|accountnumber: {0}", coreAccount.accountnumber);
Console.WriteLine("|address1_shipmethodcode: {0}", coreAccount.address1_shippingmethodcode.Value);

return true;
}

///
/// Convert a dynamic entity into a strongly typed business entity.
///

public static BusinessEntity Convert(DynamicEntity entity)
{
string coreEntityName = entity.Name;

Type entType = (new account()).GetType();
ConstructorInfo init = entType.GetConstructor(new Type[] { });
object ent = init.Invoke(new object[] { });

foreach (Property p in entity.Properties)
{
PropertyInfo entProp = entType.GetProperty(p.Name);
if (null == entProp)
{
Console.WriteLine("Could not find attribute {0} on entity {1}.", p.Name, coreEntityName);
}
else
{
entProp.SetValue(ent, GetAttribute(entity, p.Name), null);
}
}
return (BusinessEntity)ent;
}

///
/// This method returns the value of a dynamic entity attribute.
///

public static object GetAttribute(BusinessEntity entity, string attribute)
{
if (entity.GetType() == typeof(DynamicEntity))
{
DynamicEntity de = (DynamicEntity)entity;
foreach (Property prop in de.Properties)
{
if (prop.Name == attribute)
{
PropertyInfo propInfo = prop.GetType().GetProperty("Value");
return propInfo.GetValue(prop, null);
}
}
return null;
}
else
{
PropertyInfo propInfo = entity.GetType().GetProperty(attribute);
return propInfo.GetValue(entity, null);
}
}
}
}