Skip to content

Application that connects idea management platforms with general purpose social networks

License

Notifications You must be signed in to change notification settings

rebearteta/social-ideation

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Social Ideation

Social Ideation is an application that connects IdeaScale -- one of today's leading online idea management platforms -- with the world's largest virtual space of participation and socialization, Facebook, allowing people to participate on IdeaScale-based public consultations initiatives from Facebook.

More specifically, it enables users to participate (submit ideas, place comments) on IdeaScale initiatives without leaving facebook and using only Facebook's native features: posts, hashtags, comments, and groups. At the same time, the ideas and comments published on IdeaScale are automatically replicated on the Facebook group linked to the initiative.

Social Ideation is a concrete effort toward bringing civic participation platforms, such as IdeaScale, closer to the large and diverse community of Facebook users. Apart from reaching wider and larger sources of information, it aims at reducing as much as possible the participation barrier.

Examples

app_scenarios

Mapping Model

Social Ideation proposes the model outlined in the next figure to map IdeaScale elements (initiatives, campaigns, ideas, comments) with Facebook elements (groups, hashtags, posts and comments).

mapping_model

As seen on the figure the proposed mapping model is based entirely on native elements of Facebook (posts, comments, groups, and hashtags). Posts published on a Facebook group that is linked to an IdeaScale initiative and contain the hashtag of one of the initiative's campaigns are mapped to ideas. Similarly, ideas submitted on an IdeaScale initiatives that is linked to a Facebook groups are mapped to posts published on the timeline of the group.

As the figure also shows, the comments placed to Facebook posts mapped to ideas are taken and transformed into IdeaScale comments and comments published on IdeaScale ideas are mapped to Facebook comments.

On Facebook, hashtags are used to identify initiatives' campaigns.

Integration Model

The integration between the two platforms are performed mainly through API functions. Both Facebook and IdeaScale offer primitives through which is possible to read and create new content. The following figure presents the details of how the integration works.

integration_model

The app maintains records about the mapping between IdeaScale initiatives and Facebook groups. Each record saves also the hashtags that identify IdeaScale initiatives and their campaigns. To get content from IdeaScale, the app hits the API asking for the ideas and comments of the registered initiatives (1). The ideas and comment collected from Facebook are posted on IdeaScale by calling the corresponding API function (2).

The ideas and comments published on the Facebook groups linked to the registered IdeaScale initiatives are gathered by hitting the API of Facebook (3). The ideas and comments gathered from the IdeaScale initiatives are posted on behalf of the Facebook users to the Facebook groups associated with the initiatives by calling the corresponding Facebook API function (4).

The ideas and comments deleted on the Facebook group are deleted too on IdeaScale by calling the corresponding API function. On the other hand, IdeaScale doesn't provide the option delete ideas nor comments, only administrators of the initiative can do this. So, if the administrator deletes ideas or comments on IdeaScale, they will be deleted too on the Facebook group only if they have been posted by the Social Ideation App on behalf of the Facebook users.

Installation

  1. Clone the repository git clone https://github.com/joausaga/social-ideation.git

  2. Go inside the repository folder and execute pip install -r requirements.txt to install dependencies. If an error occurs during the installation, it might be because some of these resons: a) Package python-dev is missing b) Package libmysqlclient-dev is missing c) The environment variables LC_ALL and/or LC_CTYPE are not defined or don't have a valid value

  3. Clone Facebook API client library git clone https://github.com/pythonforfacebook/facebook-sdk

  4. Go inside Facebook API client library and install it python setup.py install

  5. Create a mysql database. Make sure your database collation is set to UTF-8, if not, edit the script fix_database_to_utf8.py and set the user and passwd parameters of your database and then run the script python fix_database_to_utf8.py

  6. Set the configuration parameters of the database in social-ideation/settings.py

    DATABASES = {
        ...
            'NAME': '',
            'USER': '',
            'PASSWORD': '',
            'HOST': '',
            'PORT': '',
        ...
    }
    
  7. Run python manage.py migrate to set up the database schema

  8. Run python manage.py syncdb to create an admin user and install the authentication system

  9. Install Rabbit MQ broker. Unix installation instructions

  10. Set the static url in social-ideation/settings.py

  11. Add the following programs (rabbit, celery and celerybeat) at the program section of the supervisor configuration file (supervisord.conf). You can look at the example file (supervisord-example.conf)

Getting started

  1. Sign up to IdeaScale

  2. Create an IdeaScale Community

  3. Request an API token for the new community

  4. Create a Facebook App

  5. Set the App Domains (Basic) and the Valid OAuth redirect URIs (Advanced) on the App Settings panel

  6. Create a Facebook Group and set the privacy setting to Public

  7. Go inside social ideation directory and load initial IdeaScale data python manage.py loaddata ideascale_connector_data.json

  8. Hit the social ideation URL, i.e., http://www.social-ideation.com, and log in with the admin credentials

  9. Create a new IdeaScale initiative (Home->IdeaScale->Initiative->Add)

  10. Update the URLs of the callbacks replacing the host part of the callback URLs with the URL where the app is installed (Home->Connectors->URL Callbacks)

  11. Update IdeaScale connector token (Home->Connectors->IdeaScale) The correct token should be located in the table authtoken_token (user_id = 1)

  12. Create a consultation platform (Home->App->Consultation platforms->Add) choosing IdeaScale as the connector

  13. Import the consultation platform initiatives. Select the new consultation platform in (Home->App->Consultation Platforms) and choose the option 'Get Initiatives' from the Action menu located on the top of the list

  14. Obtain Facebook OAuth token. Go to Graph API Explorer and in the application drop down select the app created in Step 4. Click Get Access Token; in permissions popup go to extended permissions tab and select publish_actions.

  15. Create a social network app (Home->App->Social network apps->Add) choosing Facebook as the connector, setting the app id, app secret, app access token (app id|app secret) and the redirect uri (that matches the Site URL) of the created Facebook App in Step 4

  16. Create a social network app user (Home->App->Social network app users->Add) setting in the field access token the previously obtained access token in Step 14

  17. Create a social network app community (Home->App->Social network app communities->Add) and put the user created in Step 15 as the admin

  18. Edit the previously social network app created, configuring the community as the community created before.

License

MIT

Technologies

  1. Django Framework 1.8

  2. MySQL database and its corresponding python package

  3. Facebook SDK a python-based Facebook API client

  4. IdeaScaly a python-based IdeaScale API client

  5. Celery

  6. Celery for Django

  7. Rabbit MQ

Let me know

If you use social ideation, please write me a short message with a link to your project. It is not mandatory, but I will really appreciate it!

About

Application that connects idea management platforms with general purpose social networks

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 54.5%
  • HTML 26.1%
  • CSS 10.3%
  • Erlang 3.8%
  • Shell 3.4%
  • JavaScript 1.9%